Utilizo un conjunto de funciones de conveniencia para anteponer o agregar una ruta a una variable. Las funciones vienen en el tarball de distribución para Bash en un archivo contrib llamado "pathfuncs".
- add_path agregará la entrada al final de la variable PATH
- pre_path agregará la entrada al comienzo de la variable PATH
- del_path eliminará la entrada de la variable PATH, donde sea que esté
Si especifica una variable como segundo argumento, la usará en lugar de PATH.
Por conveniencia, aquí están:
# 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 los agrega a su archivo de inicio de bash, puede agregarlos a su RUTA de esta manera:
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
O especifique una variable diferente:
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
Utilizo este método en mis archivos rc poniendo primero las pre_paths y las add_paths en segundo lugar. Hace que todos mis cambios de ruta sean fáciles de entender de un vistazo. Otro beneficio es que las líneas son lo suficientemente cortas como para que pueda agregar un comentario final en una línea si es necesario.
Y dado que estas son funciones, puede usarlas de forma interactiva desde la línea de comandos, como decir add_path $(pwd)
que agregue el directorio actual a la ruta.
PATH=foo:$PATH
parece incorrecto porque mantiene el crecimiento todo el tiemposource ~/.bashrc
e inclusoexec bash
no puede ayudar desde el$PATH
principioexport
.