Já vi outras pessoas na Internet também tendo esse problema, mas as soluções não foram conclusivas, então gostaria de chamar a atenção novamente para isso.
De acordo com esta página no wiki do Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables a maneira recomendada de definir variáveis de ambiente para toda a sessão é modificar ~/.pam_environment.
Aqui está qual é o meu objetivo:
- Quero criar uma variável de ambiente ANDROID_HOME que tenha como valor um caminho para um determinado local na minha pasta pessoal.
- Quero adicionar duas pastas ao PATH.
Aqui está o que eu fiz. O arquivo ~/.pam_environment não existia, então eu o criei e adicionei as seguintes linhas:
ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
Desconectado e conectado novamente.
O resultado não é esperado. Abri o terminal e ecoei $ ANDROID_HOME e foi isso que obtive:
${HOME}/Android/Sdk
Parece que ${HOME}
não foi substituído pelo caminho da minha pasta pessoal. Por que?
Observe cd
-ing para $ANDROID_HOME (o Android/Sdk realmente existe na minha pasta pessoal):
anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory
Também ecoar $PATH me deu isto:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools
Por que as variáveis não são substituídas por seus valores como seria lógico supor, especialmente quando o exemplo no site mencionado deu a impressão de que variáveis podem ser usadas dentro dos valores?
Qual é a maneira correta de definir variáveis de ambiente para toda a sessão às quais os programas GUI também têm acesso?
Responder1
O exemplo ema wiki, para definir variáveis de sessão via ~/.pam_environment
, afirma em uma nota:
A sintaxe usada para modificar PATH, cuja sintaxe difere dos arquivos de script, é necessária para que a expansão de variáveis funcione.
Portanto, sua primeira linha deve ser semelhante a:
ANDROID_HOME DEFAULT=${HOME}/Android/Sdk
Responder2
Duas sugestões:
1º - o formato das suas declarações ambientais deverá ser:
ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
segundo, coloque suas novas declarações ambientais em~/.profile
Responder3
Eu acho que você pode precisar de um export HOME
depois de configurar a variável path (em ~/.bashrc nós fazemos)