J'utilise un ensemble de fonctions pratiques pour ajouter ou ajouter un chemin à une variable. Ces fonctions se trouvent dans la distribution de Bash, dans un fichier contributif appelé "pathfuncs".
- add_path ajoutera l'entrée à la fin de la variable PATH.
- pre_path ajoutera l'entrée au début de la variable PATH.
- del_path supprimera l'entrée de la variable PATH, où qu'elle se trouve.
Si vous spécifiez une variable comme second argument, elle sera utilisée à la place de PATH.
Pour plus de commodité, les voici :
# 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;:\$;;"`
}
Si vous les ajoutez à votre fichier de démarrage bash, vous pouvez les ajouter à votre PATH comme ceci :
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
Ou spécifiez une autre variable :
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
J'utilise cette méthode dans mes fichiers rc en mettant les pre_paths en premier et les add_paths en second. Cela rend tous mes changements de chemins faciles à comprendre d'un coup d'oeil. Un autre avantage est que les lignes sont suffisamment courtes pour que je puisse ajouter un commentaire à la fin d'une ligne si nécessaire.
Et comme il s'agit de fonctions, vous pouvez les utiliser de manière interactive à partir de la ligne de commande, par exemple en disant add_path $(pwd)
pour ajouter le répertoire courant au chemin.