Eu uso um conjunto de funções de conveniência para acrescentar ou acrescentar um caminho a uma variável. As funções vêm no pacote de distribuição do Bash em um arquivo de contribuição 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 esteja
Se você especificar uma variável como o segundo argumento, ela será usada em vez de PATH.
Por conveniência, aqui estão eles:
# 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ê os adicionar ao seu arquivo de inicialização do bash, poderá adicioná-lo ao 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 nos meus arquivos rc colocando os pre_paths primeiro e os add_paths segundo. Isso facilita a compreensão de todas as alterações no meu caminho. Outro benefício é que as linhas são curtas o suficiente para que eu possa adicionar um comentário à linha, se necessário.
E como essas 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.
PATH=foo:$PATH
parece errado porque manter o crescimento cada vezsource ~/.bashrc
e até mesmoexec bash
não pode ajudar, uma vez que o$PATH
éexport
.