Você deve usar as abordagens na tentativa 3 ou 4, mas precisa exportar a variável; mudar
MYVAR=123
para
export MYVAR=123
Estou executando o Ubuntu em um PC local com o seguinte Linux distro / kernel:
$ lsb_release -a
>> ubuntu 16.04.3 LTS
$ uname -r
>> 4.10.0-33-generic
Eu tenho um script python (3.5) que chama variáveis de ambiente através do pacote os
.
Por uma questão de simplicidade, vamos usar o seguinte script, test_script.py:
import os
MY_VAR = os.environ['MY_VAR']
print(MY_VAR)
Quando executo este script do terminal:
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Referência: [1] [4]
$ MY_VAR=123
$ export MY_VAR
$ echo $MY_VAR
>> 123
$ python test_script.py
>> 123
Sucesso! ... até fechar o terminal e reabrir o terminal. Quando faço isso:
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Referência: [2]
Ao final de /home/USER/.profile
, adiciono as seguintes linhas:
# my variable
MYVAR = 123
Salvar. Confirme guardado.
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Referência: [2]
Ao final de /etc/profile
, adiciono as seguintes linhas:
# my variable
MYVAR=123
Salvar. Confirme guardado.
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Referência: [2]
Crie myvar.sh
em /etc/profile.d/
Adicione a seguinte linha:
MYVAR=123
Salvar. Confirme guardado.
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Referência: [2] [3]
Ao final de /etc/environment
, adiciono a seguinte linha:
MYVAR=123
Salvar. Confirme guardado.
$ python test_script.py
>> File "test-script.py", line 3, in <module>
>> MY_VAR = os.environ['MY_VAR']
>> File "/home/USER/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
>> raise KeyError(key) from None
>> KeyError: 'MY_VAR'
Por favor me ajude! Eu não entendo o que estou fazendo errado aqui.
[1] Como definir variáveis de ambiente permanentemente para um usuário [2] Variável de ambiente permanente para todos os usuários [3] Como definir permanentemente as variáveis ambientais [4] Como posso definir uma variável de ambiente do usuário? (permanentemente, não sessão)