Como definir variáveis ​​de ambiente e PATH para toda a sessão?

Como definir variáveis ​​de ambiente e PATH para toda a sessão?

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:

  1. Quero criar uma variável de ambiente ANDROID_HOME que tenha como valor um caminho para um determinado local na minha pasta pessoal.
  2. 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 HOMEdepois de configurar a variável path (em ~/.bashrc nós fazemos)

informação relacionada