O PATH pode ser definido em qualquer uma das várias leituras do arquivo quando ele é iniciado. Para encontrá-los, execute isto:
grep --color -H 'PATH=' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
~/.bash_aliases /etc/bash.bashrc /etc/profile \
/etc/profile.d/* /etc/environment 2> /dev/null
Esses são os padrões. Se você também estiver obtendo outros arquivos de um desses, as coisas podem ficar mais complexas.
De qualquer forma, para corrigi-lo-supondo que você não tenha feito nada para os arquivos globais em /etc/
-você pode executar este:
sed -i '/PATH=/d' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases
Isso excluirá qualquer configuração de linhas PATH
desses arquivos. Agora, adicione o caminho certo no lugar certo:
pp='PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin'
[[ -e '~/.bash_profile' ]] && echo "$pp" >> ~/bash_profile ||
echo "$pp" >> ~/.profile
Quando invocado como um shell de login, o bash lê .bash_profile
se presente e, se não, lê ~/.profile
(ele irá ignorar .profile
se .bash_login
estiver presente, mas eu suponho que não é). Portanto, os comandos acima primeiro salvarão o caminho desejado como $pp
e, em seguida, verificarão se existe um ~/.bash_profile
, adicionarão a definição de caminho a ele se o fizer e, se isso não ocorrer, o adicionará a ~/.profile
.
No futuro, para evitar este tipo de problema, use uma função para adicionar diretórios para sua $PATH
. Adicione estas linhas ao seu ~/.profile
:
pathmunge ()
{
if ! echo $PATH | /bin/egrep -q "(^|:)($|:)"; then
if [ "" = "after" ]; then
PATH=$PATH:;
else
PATH=:$PATH;
fi;
fi
}
Em seguida, acrescentar algo ao início de sua $PATH
, adicione esta linha para ~/.profile
:
pathmunge "/path/to/foo"
E para adicioná-lo ao final:
pathmunge "/path/to/foo" after
A função só adicionará um novo diretório ao $PATH
, se ainda não estiver lá.