Eu uso um conjunto de funções de conveniência para adicionar ou anexar um caminho a uma variável. As funções vêm no tarball de distribuição do Bash em um arquivo contrib chamado "pathfuncs".
- add_path adicionará a entrada ao final da variável PATH
- pre_path adicionará a entrada ao início da variável PATH
- del_path removerá a entrada da variável PATH, onde quer que seja
Se você especificar uma variável como o segundo argumento, ela usará isso em vez de PATH.
Por conveniência, aqui estão elas:
# 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 você adicioná-los ao seu arquivo de inicialização bash, você pode adicionar ao seu PATH assim:
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
Ou especifique uma variável diferente:
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
Eu uso esse método em meus arquivos rc colocando os pre_paths primeiro e add_paths em segundo lugar. Isso torna todas as minhas mudanças de caminho fáceis de entender em um piscar de olhos. Outro benefício é que as linhas são curtas o suficiente para que eu possa adicionar um comentário à direita de uma linha, se necessário.
E como estas são funções, você pode usá-las interativamente a partir da linha de comando, como dizendo add_path $(pwd)
para adicionar o diretório atual ao caminho.