Script Shell Linux

Résolu
Bonjour,

voilà un petit script pour rajouter des dépôts dans le fichier /etc/apt/sources.list

# !/bin/bash
#Liste des fonctions
function verif_root 
{
	UID_ROOT=0
	if [ "$UID" -ne "$UID_ROOT" ]
	then
		#Message d'erreur
		echo "Les droits d'administrateur n'ont pas été octroyés pour ce script. Veuillez le relancer avec les permissions root!"
		exit
	fi
}  

#Script

#Ajout du dépôt Wine
verif_root
echo "#WineHQ - Ubuntu 8.04" >> /etc/apt/sources.list
echo "deb http://wine.budgetdedicated.com/apt hardy main" >> /etc/apt/sources.list
#suite ici


Quand je l'essaye de l'éxécuter en utilisateur :

manu@manu-desktop:~/Bureau$ ./script_install_wine_ubuntu.sh 
Les droits d'administrateur n'ont pas été octroyés pour ce script. Veuillez le relancer avec les permissions root!


Donc là, c'est niquel comme je veux.

par contre en root :

manu@manu-desktop:~/Bureau$ sudo ./script_install_wine_ubuntu.sh 
./script_install_wine_ubuntu.sh: 3: function: not found
[: 12: Illegal number: 
./script_install_wine_ubuntu.sh: 17: verif_root: not found


Par contre, en tant que root (sudo -s avant), ça marche...

Si quelqu'un voit le problème...

--
"Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety". Benjamin Franklin
Configuration: Linux
Firefox 3.0.5

3 réponses

  1. Modérateur
    Un truc bête mais...enlève voir l'espace dans le sha-bang:
    #!/bin/bash

    Peut être que root n'a pas bash comme shell par défaut, et que comme le sha-bang est peut être mal interprété, le passage forcé à bash ne se fait pas.
    1. Contributeur
      Je ne sais pas trop d'où vient le message d'erreur que t'obtiens avec sudo mais pas en root.
      Par contre, il devrait y avoir au moins un problème :
      echo "#WineHQ - Ubuntu 8.04" >> /etc/apt/sources.list
      Si tu lances ça en sudo, ça ne marchera pas car la redirection de flux est géré par le shell.
      Alors qu'en root, ça marchera.
      1. donc j'ai modifié le script :

        #!/bin/bash
        #Liste des fonctions
        function verif_root ()
        {
        	UID_ROOT=0
        	#if [ "$UID" -ne "$UID_ROOT" ]
        	if [ "$UID" != "$UID_ROOT" ]
        	then


        et là, ça marche

        ça m'apprendra à faire du copier/coller sans réfléchier 2 minutes...