Uso una serie di funzioni utili per anteporre o aggiungere un percorso a una variabile. Le funzioni sono disponibili nel tarball di distribuzione di Bash in un file contrib chiamato "pathfuncs".
- add_path aggiungerà la voce alla fine della variabile PATH
- pre_path aggiungerà la voce all'inizio della variabile PATH
- del_path rimuoverà la voce dalla variabile PATH, ovunque si trovi
Se si specifica una variabile come secondo argomento, verrà utilizzata quella invece di PATH.
Per comodità, eccoli:
# is $1 missing from $2 (or PATH) ?
no_path() {
eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}
Se li aggiungi al tuo file di avvio di bash, puoi aggiungere al tuo PERCORSO in questo modo:
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
Oppure specifica una variabile diversa:
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
Uso questo metodo nei miei file rc mettendo prima i percorsi_precedenti e il percorso_aggiunti secondo. Rende tutti i miei cambiamenti di percorso facili da capire a colpo d'occhio. Un altro vantaggio è che le righe sono abbastanza corte da poter aggiungere un commento finale su una riga, se necessario.
E poiché si tratta di funzioni, è possibile utilizzarle in modo interattivo dalla riga di comando, ad esempio dicendo add_path $(pwd)
di aggiungere la directory corrente al percorso.
PATH=foo:$PATH
sembra sbagliato perché mantenere la crescita ogni voltasource ~/.bashrc
e ancheexec bash
non posso fare in quanto la$PATH
èexport
.