Bash e variáveis de ambiente no manjaro

Olá, estou com o seguinte problema: coloco as varáveis de ambiente no arquivo .bash_profile e em seguida pelo terminal:
source $HOME/.bash_profile
depois para verificar se tudo ocorreu bem:
echo $ANDROID_HOME
echo $PATH

Até ai tudo bem, mas logo depois tentar rodar o app com
npx react-native run-android
Ok, tudo bem. Funcionou!!!
Depois pra voltar a funcionar novamente, tenho que executar
source $HOME/.bash_profile

Tentei fazer esse procedimento até como root e acontece a mesma coisa. É como se as variáveis de ambiente fossem temporárias.
Não faço ideia do que acontece, porque comecei utilizar o Manjaro a alguns dias.

Vc está rodando esses comandos pelo Oh-my-Zsh ou pelo bash? Pq o Manjaro usa por padrão o OMZ, mas vc pode digitar bash e tentar assim, vai que funciona… tem comandos que o OMZ não reconhece, mas indo pro bash vão

1 Curtida

Verdade, já que nesses comandos tem o nome bash no meio deles.

2 Curtidas

Assim, eu manjo pouquíssimo de shell, mas talvez esse seja o primeiro erro, tentar rodar comandos bash pelo OMZ… agora, sobre os comando em si, nem ideia do que fazem e como fazer com que funcionem do jeito que vc quer… :stuck_out_tongue:

1 Curtida

tinha feito pelo normal, agora fiz pelo bash e não funcionou

1 Curtida

Bom, aí deve ser um problema na forma como vc está programando o que vc quer, e imagino que o fato de ser Manjaro ou fosse qq outra distro deve ter pouca influência

Quero apenas deixar as variáveis de ambiente permanente pra executar aplicativos react native

1 Curtida

Não tenho muita ideia de como proceder… experimentou colocar os comandos na inicialização automática do sistema pra ver se já entram carregados? Tô especulando aqui…

Eu já fiz isso pelo pop os não teve esse problema. Mas enfim vou ver se encontro algo relacionado.
Vai funcionar se eu ficar rodando o source, mas não é bom ter que ficar fazendo isso toda vez

Na verdade esses comandos é para serem rodados apenas uma vez. Por isso estou dizendo que as variáveis de ambiente estão temporárias.

1 Curtida

https://wiki.archlinux.org/index.php/Environment_variables_(Português)

1 Curtida

É o seguinte, primeiro não ficou claro se tu está usando o BASH ou ZSHELL.
Supondo que tu esteja usando mesmo o BASH, o arquivo ~/.bash_profile
(ou ~/.profile)
será lido somente quando tu entrar numa shell que é de log in.
A shell é somente de log in no TTY do Linux, muitas vezes os gerenciadores de sessão nem exibem essa shell de log in…
Então, quando tu entra numa shell pelo terminal da interface gráfica, ele não é uma shell de log in. E o pior, nem todos os gerenciadores de sessão lêem o ~/.bash_profile, então mesmo que tu exportasse as Variáveis de Ambiente, não iriam estar disponíveis depois.

O que se sugere fazer é adicionar

. ~/.bash_profile

ou

source ~/.bash_profile

No final do seu arquivo ~/.bashrc

Porém, não é só isso. No arquivo ~/.bash_profile, você deve exportar as variáveis de ambiente, do contrário não serão variáveis de ambiente propriamente ditas, mas deve funcionar em algumas situações…
Algumas variáveis como o $PATH são auto-exportáveis então você não precisa adicionar export nesse caso…

export ANDROID_HOME=/foo/bar/baz
3 Curtidas

Cara, deu certo aqui. Coloquei o source ~/.bash_profile no final do arquivo ~/.bashrc e agora quando executo pelo terminal usando bash está funcionando sem a necessidade de rodar o source novamente.
Agora como que eu faço pra definir o bash como padrão no lugar do zshell?

Recomendo começar um novo tópico para fazer isso, assim cada tópico fica com claro objetivo.

No zshell você colocaria e exportaria esses parâmetros de ambientes em ~/.zshenv
o qual é lido SEMPRE, tanto em `shells de login’ quanto `non-login shells’.

Ou adicione em ~/.zshenv:

source ~/.bash_profile

Coloquei em .zshrc e parece funcionar. É a mesma coisa? Não tem esse arquivo zshenv

1 Curtida

Não é a mesma coisa… O .zshrc é similar ao .bashrc
e o .zshenv é similar ao .bash_profile e .profile,
mas deve funcionar …

1 Curtida