# Comment changer $PATH



## pierreTib (16 Juin 2005)

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+


----------



## El_ChiCo (16 Juin 2005)

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


----------



## FjRond (17 Juin 2005)

Ç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:

```
/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 (17 Juin 2005)

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 .


----------



## pierreTib (17 Juin 2005)

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.


----------



## pierreTib (17 Juin 2005)

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+


----------



## FjRond (18 Juin 2005)

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:

```
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:

```
PATH=$PATH:/usr/local/bin
```
Voici mon fichier de configuration ~/Library/init/zsh/path:

```
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:

```
$ 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.


----------



## pierreTib (18 Juin 2005)

Ç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


----------



## FjRond (19 Juin 2005)

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 _toujours_en premier, comme ceci:

```
setenv PATH $PATH:/Developer/Java/bin
```
et non

```
setenv PATH /Developer/Java/bin:$PATH
```
Voici mon .tcshrc:

```
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:

```
% 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:

```
$ 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
$
```


----------



## pierreTib (20 Juin 2005)

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


----------



## FjRond (20 Juin 2005)

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:

```
$ 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}
```
 

Tandis que dans mon $HOME, local ne se trouve pas dans .profile ou .bashrc:

```
% 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" \.*
```


----------



## pierreTib (20 Juin 2005)

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:



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

Merci quand même d'avoir essayé.


----------

