Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/11/2009, à 17:02

vchem

Variable d'environnement PATH

Hello,

Je souhaiterai ajotuer le répertoire /opt/mysql/bin à mon PATH.

Je sais qu'on peux utiliser les .bashrc et .profile & compagnie, mais je souhaite le faire pour tous les utilisateurs. J'ai donc dans un premier temps, après quelques recherches, modifié le fichier /etc/rc.local en ajoutant avant "exit 0" :

export PATH=/opt/mysql/bin:$PATH

Voyant que ca n'avait aucun effet (après redémarage, echo $PATH ne contient pas mon répertoire), j'ai essayé avec /etc/init.d/rc.local.

Idem, mais la je ne comprends pas, car il execute bien une commande qui viens juste après et qui monte une partition sur un répertoire donné.:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
	if [ -x /etc/rc.local ]; then
	        [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
		/etc/rc.local
		ES=$?
		[ "$VERBOSE" != no ] && log_end_msg $ES
		return $ES
	fi
}

case "$1" in
    start)
	do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

# Aucun effet
export PATH=/opt/mysql/bin:$PATH

# Marche
mount /dev/mapper/isw_fbgegcegj_Bases1 /opt/bases

Bref, j'ai vu qu'on pouvait essayer le fichier /etc/profile, ou le fichier /etc/environment.

Avant de tester, je souhaiterai savoir:
1. Si c'est normal que mes deux premiers essais soient infructueux?
2. Si il y a une réponse claire et standard à la question "Quel fichier dois-je modifier pour changer le PATH pour l'ensemble des utilisateurs" ?

Par avance merci smile

Hors ligne

#2 Le 23/11/2009, à 17:22

Grünt

Re : Variable d'environnement PATH

Pour ta deuxième question, il faut modifier "/etc/profile":

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

Ça signifie "si l'utilisateur est root, il a un PATH de root, sinon il a un PATH d'utilisateur normal."
En gros, root a accès à "/usr/sbin" et à "/sbin", mais pas à "/usr/games" (on ne joue pas en root!!).
Il faut donc ajouter tes chemins dans le deuxième PATH, celui des "non root".


Red flashing lights. I bet they mean something.

Hors ligne

#3 Le 23/11/2009, à 17:48

seb0uil

Re : Variable d'environnement PATH

Salut,
Ca ne vient pas aussi du fait que le .profile n'est lu que pour la connexion en terminal (via ALT+F1 par exemple). Dans le cas du terminal de gnome, par exemple, il me semble qu'il faut que ce soit dans une fichier gnomerc pour que ca soit pris en compte.

Pour ce qui est de tes essais, c'est normal. Tu modifies le path dans le contexte dans lequel ton script s'execute.
En gros, au lancement, avec les droits root, un tas de choses se lancent. Dans celle-la, ton script rc.local pour lequel tu positionnes la variable PATH. Mais cette variable n'a pas pour but d'être propagé plus loin.
D'ailleurs si tu fais un essai, tu ouvres un terminal, tu positionnes un PATH, puis tu ouvres une nouvelle session (via un 'su -' par exemple) comme il recharge l'environnement de ton utilisateur, ta variable path est réinitialisé (pour cette session). Si tu fermes la session (via 'exit') tu retournes à ta session précedente, et tu retrouves ton PATH smile


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#4 Le 24/11/2009, à 09:29

vchem

Re : Variable d'environnement PATH

OK...

J'ai utilisé le fichier /etc/profile et ma variable path est à présent OK au démarrage. Mon problème est maintenant le suivant: mon PATH est OK pour les utilisateurs mais pas pour le root!

Je me suis pourtant contenté d'ajouter la ligne suivante, sans aucune autre condition:

export PATH=/opt/mysql/bin:$PATH

Donc... ? Ca n'est pas le bon fichier à modifier si je comprends bien (pour que le nouveaux PATH soit propagé à tous les utilisateurs, root compris)

Ma question 2 est donc toujours d'actualité...

Hors ligne

#5 Le 24/11/2009, à 09:40

compte supprimé

Re : Variable d'environnement PATH

Hello,

je n'ai pas d'Ubuntu sous la main, mais n'y a-t-il pas un répertoire /etc/profile.d ?
C'est un endroit 'standard' pour y mettre des scripts perso à exécuter au démarrage.

Dans un RedHat, on trouve cela dans /etc/profile :

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "$PS1" ]; then
            . $i
        else
            . $i >/dev/null 2>&1
        fi
    fi
done

Ceci fait que le /etc/profile va lire tous les .sh dans /etc/profile.d.
Si c'est comme ça pour Ubuntu, c'est la méthode la plus propre, car tu ne modifies aucun fichier système, tu rajoutes ton propre script (que tu vas bien sur penser à sauvegarde smile) dans un mécanisme existant.