Comment changer $PATH

pierreTib

Membre confirmé
16 Février 2005
42
0
Montréal
pierreth.over-blog.com
Bonjour,

Voici le $PATH que j'ai dans mon terminal:

/System/Library/Frameworks/Python.framework/Versions/2.3/bin:
/Developer/Java/bin:
/Developer/qt/bin:
/sw/bin:
/sw/sbin:
/usr/local/bin:
/bin:/sbin:
/usr/bin:
/usr/sbin:
/usr/X11R6/bin:
/Users/pierreth/bin

Je me demande si c'est bien normal d'avoir /usr/local/bin avant /usr/bin?

J'aimerais bien changer cela mais je ne sais pas comment. J'ai regardé mon .profile, .login et .tcshrc de mon dossier utilisateur mais je trouve pas de mentions de /usr/local/bin. J'aimerais mettre ce repertoire plus en dernier.

Est-ce que quelqu'un serait comment?

A+
 
le PATH se trouve dans le fichier profile global, et non dans celui de l'utilisateur.
c'est a dire qu'il faut regarder dans /etc/profile au lieu de ~/.profile
 
Ça ne doit pas avoir une grande incidence. Pendant qu'on y est, est-il bien normal que certains chemins apparaissent deux fois, comme ici /usr/sbin et /sbin:
Bloc de code:
/sw/bin:/sw/sbin:/Users/frangi/texmf/bin:/usr/TeX/bin/powerpc-darwin6.8:
/Developer/Tools:/usr/local/bin:/Users/frangi/bin:/usr/bin:/bin:/usr/sbin:/sbin:
/usr/local/sbin:/usr/sbin:/sbin:/usr/X11R6/bin
Mais ça ne m'a jamais posé de problème particulier.
 
GrandGibus a dit:
C'est pas bien grave, cependant, il faut garder à l'esprit que l'ordre des chemins influe sur la commande qui sera exécutée:

Pour une commande toto qui serait dans /usr/sbin ET /sbin; celle de /usr/sbin sera exécutée ;).

Ceci est quand même important. Par exemple, je veux pouvoir installer de nouvelles commandes pour mon propre usage dans /usr/local/bin. Mais si ce répertoire est listé avant /usr/bin/ alors cela risque de changer le correctement des scripts système et cela représente un danger. Je vais donc modifier /ect/profile pour corriger ce problème.

Merci de votre aide.
 
El_ChiCo a dit:
le PATH se trouve dans le fichier profile global, et non dans celui de l'utilisateur.
c'est a dire qu'il faut regarder dans /etc/profile au lieu de ~/.profile

J'ai fait les changements nécessaires dans /etc/profile et j'ai redémarré. Mais le $PATH est resté le même. C'est comme si les changements n'avaient pas été appliqués. Que faire?

-------------------
A+
 
pierreTib a dit:
J'ai fait les changements nécessaires dans /etc/profile et j'ai redémarré. Mais le $PATH est resté le même. C'est comme si les changements n'avaient pas été appliqués. Que faire?

-------------------
A+
Voici ce que j'ai dans mon /private/etc/profile:
Bloc de code:
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
Tous les autres chemins se trouvent dans mon ~/Library/init/zsh/path, qui équivaut au ~/.profile de bash. Il me semble que tout autre chemin doit être ajouté dans le ~/.profile ou fichier de configuration personnel selon le shell utilisé en prenant soin de commencer par $PATH comme ceci:
Bloc de code:
PATH=$PATH:/usr/local/bin
Voici mon fichier de configuration ~/Library/init/zsh/path:
Bloc de code:
PATH=$PATH:/usr/local/bin
PATH=$PATH:/Developer/Tools
PATH=$PATH:/usr/local/sbin
# PATH de TeXLive et de FrenchPro                                                              
PATH=$PATH:/usr/TeX/bin/powerpc-darwin6.8
PATH=$PATH:~/texmf/bin
# Commandes personnelles                                                                       
PATH=$PATH:~/bin
Ce qui me donne cette valeur de la variable $PATH:
Bloc de code:
$ echo $PATH
/sw/bin:/sw/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Developer/Tools:
/usr/local/sbin:/usr/TeX/bin/powerpc-darwin6.8:/Users/frangi/texmf/bin:/Users/frangi/bin:
/usr/X11R6/bin
On remarque que, outre ce qui relève de fink, les commandes apparaissent dans le même ordre que les fichiers /etc/profile et ~/Library/init/zsh/path.
Je viens d'ailleurs de faire des essais de modification de l'ordre du $PATH, qui montrent ce comportement.
 
Ça ne fonctionne pas pour moi. :-(

Voici ce que j'ai de mon Termial:

[Ordinateur-de-Pierre-Thibault:~] pierreth% cat /private/etc/profile
# System-wide .profile for sh(1)

#PATH="/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"

# Je prefere que /usr/local/bin soit apres /usr/bin (PT):
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"

export PATH

if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi






[Ordinateur-de-Pierre-Thibault:~] pierreth% cat .tcshrc

source /sw/bin/init.csh
alias ll 'ls -l'
setenv DISPLAY :0.0
setenv IMGV_HOME /Library/Python/2.3/imgv/
setenv PYLIB /System/Library/Frameworks/Python.framework/Versions/Current/lib/python2.3




[Ordinateur-de-Pierre-Thibault:~] pierreth% cat .login
setenv QTDIR /Developer/qt
setenv PATH $QTDIR/bin:$PATH
setenv PATH /Developer/Java/bin:$PATH
setenv PATH /System/Library/Frameworks/Python.framework/Versions/2.3/bin:$PATH
setenv DYLD_LIBRARY_PATH $QTDIR/lib
setenv PATH ${PATH}:/Users/pierreth/bin
setenv IMGV_HOME /Library/Python/2.3/imgv/
setenv CLICOLOR 1
setenv LSCOLORS ExFxCxDxBxegedabagacad

[Ordinateur-de-Pierre-Thibault:~] pierreth% cat .profile

. /sw/bin/init.sh
QTDIR=/Developer/qt
PATH=$QTDIR/bin:$PATH
PATH=/Developer/Java/bin:$PATH
PATH=/System/Library/Frameworks/Python.framework/Versions/2.3/bin:$PATH
DYLD_LIBRARY_PATH=$QTDIR/lib:$DYLD_LIBRARY_PATH

export QTDIR PATH DYLD_LIBRARY_PATH

CLICOLOR=1
LSCOLORS=ExFxCxDxBxegedabagacad
export CLICOLOR LSCOLORS
 
Votre shell étant tcsh, il est normal que la modification de /etc/profile n'ait rien donné.
Je vous suggérerais de modifier votre ~/.tcshrc de manière à ce que $PATH apparaisse toujoursen premier, comme ceci:
Bloc de code:
setenv PATH $PATH:/Developer/Java/bin
et non
Bloc de code:
setenv PATH /Developer/Java/bin:$PATH
Voici mon .tcshrc:
Bloc de code:
setenv PATH ${PATH}:/usr/local/bin:/usr/local/sbin:/Developer/Tools:/usr/TeX/bin/powerpc-darwin6.8:~/texmf/bin:~/bin
et le résultat de la commande echo:
Bloc de code:
% echo $PATH
/sw/bin:/sw/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/Developer/Tools:/usr/TeX/bin/powerpc-darwin6.8:/Users/frangi/texmf/bin:/Users/frangi/bin:/usr/X11R6/bin
%
On retrouve bien le même ordre.
J'ai reporté les mêmes transformations dans profile:
Bloc de code:
$ cat .profile
# Initialisation de fink
. /sw/bin/init.sh
##
# Modification de la variable $PATH pour lui ajouter
# les scripts personnels dans ~/bin les outils Developer et
# les commandes propres à TeXLive et French-pro
##
PATH=/Developer/Tools
PATH=/usr/TeX/bin/powerpc-darwin6.8
PATH=~/texmf/bin
PATH=$PATH:~/bin
export $PATH
##
# Définition des variables LANG  et LC_ALL
##
export LANG=fr_FR
export LC_ALL=fr_FR

$ echo $PATH
/sw/bin:/sw/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/Developer/Tools:/usr/TeX/bin/powerpc-darwin6.8:/Users/frangi/texmf/bin:/Users/frangi/bin:/usr/X11R6/bin
$
 
Mais le mot local n'est même pas présent dans mon .profile ou dans .tcshrc. Je demande toujours comment j'arrive à ce résultat.


[Ordinateur-de-Pierre-Thibault:~] pierreth% cat .tcshrc

source /sw/bin/init.csh
alias ll 'ls -l'
alias pd 'pushd'
alias ppd 'popd'
setenv DISPLAY :0.0
setenv IMGV_HOME /Library/Python/2.3/imgv/
setenv PYLIB /System/Library/Frameworks/Python.framework/Versions/Current/lib/python2.3

[Ordinateur-de-Pierre-Thibault:~] pierreth% cat .profile

. /sw/bin/init.sh
QTDIR=/Developer/qt
PATH=$QTDIR/bin:$PATH
PATH=/Developer/Java/bin:$PATH
PATH=/System/Library/Frameworks/Python.framework/Versions/2.3/bin:$PATH
DYLD_LIBRARY_PATH=$QTDIR/lib:$DYLD_LIBRARY_PATH

export QTDIR PATH DYLD_LIBRARY_PATH

CLICOLOR=1
LSCOLORS=ExFxCxDxBxegedabagacad
export CLICOLOR LSCOLORS
 
pierreTib a dit:
Mais le mot local n'est même pas présent dans mon .profile ou dans .tcshrc. Je demande toujours comment j'arrive à ce résultat.
En effet, avec bash dans Tiger, il semble inutile d'ajouter /usr/local au PATH. Pourtant, jusqu'à Panther, il me semble que c'était nécessaire. J'ai fait une recherche pour voir où le chemin de local est configuré, mais j'avoue que ça me dépasse:
Bloc de code:
$ grep "/usr/local/" /etc/*
/etc/daily:PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
/etc/inetd.conf:##pop3  stream  tcp     nowait  root    /usr/libexec/tcpd               /usr/local/libexec/popper
/etc/inetd.conf:##imap4 stream  tcp     nowait  root    /usr/libexec/tcpd               /usr/local/libexec/imapd
grep: /etc/master.passwd: Permission denied
/etc/pear.conf:a:20:{s:13:"master_server";s:12:"pear.php.net";s:10:"http_proxy";s:0:"";s:7:"php_dir";s:12:"/usr/lib/php";s:7:"ext_dir";s:49:"/usr/lib/php/extensions/no-debug-non-zts-20020429";s:7:"doc_dir";s:16:"/usr/lib/php/doc";s:7:"bin_dir";s:8:"/usr/bin";s:8:"data_dir";s:17:"/usr/lib/php/data";s:8:"test_dir";s:17:"/usr/lib/php/test";s:9:"cache_dir";s:15:"/tmp/pear/cache";s:7:"php_bin";s:12:"/usr/bin/php";s:8:"username";s:0:"";s:8:"password";s:0:"";s:7:"verbose";i:1;s:15:"preferred_state";s:6:"stable";s:5:"umask";i:18;s:9:"cache_ttl";i:3600;s:8:"sig_type";s:3:"gpg";s:7:"sig_bin";s:18:"/usr/local/bin/gpg";s:9:"sig_keyid";s:0:"";s:10:"sig_keydir";s:21:"/private/etc/pearkeys";}
/etc/snmpd.conf:# exec .EXTENSIBLEDOTMIB.52 top /usr/local/bin/top
grep: /etc/sudoers: Permission denied
/etc/weekly:    MANPATH=${MANPATH:-/usr/share/man:/usr/X11R6/man:/usr/local/man}
/etc/weekly:    MANPATH=${MANPATH:-/usr/share/man:/usr/local/man}
:eek:

Tandis que dans mon $HOME, local ne se trouve pas dans .profile ou .bashrc:
Bloc de code:
% grep "/usr/local" \.*                                         14:41
.procmailrc:PATH=/usr/bin:/bin:/usr/local/bin:/sw/bin
.tcshrc:setenv PATH ${PATH}:/usr/local/bin:/usr/local/sbin:/Developer/Tools:/usr/TeX/bin/powerpc-darwin6.8:~/texmf/bin:~/bin
.viminfo:       PATH=/usr/local/sbin:/usr/sbin:/sbin
.viminfo:       PATH=/bin:/usr/bin:/usr/local/bin
.zsh_history:/usr/local/bin/xnview
.zsh_history:: 1119271389:0;grep "/usr/local" \.*
 
FjRond a dit:
En effet, avec bash dans Tiger, il semble inutile d'ajouter /usr/local au PATH. Pourtant, jusqu'à Panther, il me semble que c'était nécessaire. J'ai fait une recherche pour voir où le chemin de local est configuré, mais j'avoue que ça me dépasse:
:eek:

Bon, je vois que je suis pas fou. Moi non plus, je ne comprends pas. :eek:

Merci quand même d'avoir essayé.