No Bash, você só precisa exportar a variável uma vez, não em cada atribuição. Remova a exportação de todas as suas atribuições do PATH e, em seguida, coloque export PATH
em uma linha sozinha no final. Se você está apenas definindo a variável uma vez, como com CC, então exportar na frente dele está bem. Você também pode exportá-los usando um único comando, como com export PATH CC ANDROID_HOME
.
O tarball de distribuição para o Bash vem com várias funções convenientes para adicionar ou anexar um caminho a uma variável. Eu acho que eles estão em um arquivo de contribuição chamado "pathfuncs". Eles podem tornar seu arquivo rc muito mais legível.
- 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. Faz todas as minhas mudanças de caminho fáceis de entender de relance. 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 por exemplo, add_path 'pwd'
para adicionar o diretório atual ao caminho.
Editar: Corrigindo seu arquivo rc fornecido com as funções acima, eu tenho isto:
pre_path /opt/local/bin
pre_path /opt/local/sbin
pre_path ~/Downloads/android-ndk-r7
add_path ~/scripts
add_path ~/Downloads/android-sdk-mac_x86/platform-tools
add_path ~/Downloads/android-sdk-mac_x86/tools
add_path ~/Downloads/android-sdk-mac_x86/platform-tools/adb
add_path ~/bin
add_path ~/bin/subl
add_path ~/.rvm/gems/ruby-1.9.3-head/gems/git-media-0.1.1/bin
add_path $HOME/bin
add_path /Users/me/Downloads/android-sdk-mac_86/tools
add_path /Users/me/Downloads/android-sdk-mac_86/platform-tools
add_path /usr/local/bin
add_path /usr/bin
add_path /bin
add_path /usr/sbin
add_path /sbin
add_path /usr/X11/bin
add_path /.rvm/scripts/rvm
add_path /.rvm/scripts/rvm
add_path /~/Downloads/android-sdk-mac_x86/tools/android
add_path /~/Downloads/android-ndk-r7/
add_path /~/Downloads/android-sdk-mac_x86/platform-tools
ANDROID_HOME=~/Downloads/android-sdk-mac_x86
add_path $ANDROID_HOME/platform-tools
export PATH
export CC=gcc-4.2
Você tem alguma limpeza para remover duplicatas e colocar as coisas em ordem.