Estou usando zsh
como meu shell e estou tentando configurar meu ambiente.
Normalmente, defino minha $JAVA_HOME
variável criando um arquivo:
/etc/profile.d/java.sh
com o seguinte conteúdo
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
então eu saio e volto a entrar, e tudo funciona, mas por algum motivo a PATH
variável não está definida. Ele reconhece JAVA_HOME
, mas não o novo PATH
, veja este trecho de terminal:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
e eu confirmei tentando executar um comando do jvm
~ java -version
zsh: command not found: java
o PATH
não inclui o $JAVA_HOME
que deveria. há algo mais que eu deveria verificar?
Eu verifiquei que se eu executar:
source /etc/profile.d/java.sh
tudo funciona corretamente e minhas variáveis são definidas como deveriam, mas os scripts não deveriam ser /etc/profile.d
executados automaticamente?
environment-variables
zsh
Rodrigo Sasaki
fonte
fonte
~/.profile
e colocar as variáveis lá? Pode ser quePATH
esteja sendo substituído em outro lugar/etc/profile.d/
.Respostas:
Do meu ponto de vista, a melhor maneira é adicionar as seguintes linhas no
~/.zshrc
arquivo (se você ainda não o tiver, crie-o):Em seguida, reinicie o seu
zsh
, ou apenas executesource ~/.zshrc
e, em seguida, o seu PATH deve estar exatamente como você deseja.Ou, se você deseja fazer a alteração para todo o sistema, adicione o código anterior ao final do
/etc/zsh/zshenv
arquivo.Mas, em qualquer caso, não use
/etc/profile.d
para executar scripts automaticamentezsh
. Este diretório é útil apenas para obash
shell, nãozsh
como no seu caso. Para entender isso, abra o/etc/profile
arquivo, que é um arquivo de inicialização bash e, em nenhum caso, um arquivo de inicialização zsh , e você verá em algum lugar no final do arquivo:Portanto, seus scripts do
/etc/profile.d
diretório serão executados automaticamentezsh
somente se você adicionar o código anterior em um arquivo de inicialização zsh, como/etc/zsh/zprofile
por exemplo, ou fonte/etc/profile
no/etc/zsh/zprofile
arquivo.fonte
~/.zprofile
possa ser melhor que~/.zshrc
.Acho que colocar tudo em um
.zshenv
arquivo rapidamente se torna difícil de gerenciar. Eu recomendo instalar o oh-my-sh e colocar várias personalizações (env vars, funções) no.oh-my-sh/custom/
diretório como.zsh
arquivos separados .Eu também descobri que essa abordagem funciona perfeitamente quando ssh'ing na máquina ao modificar variáveis env como
PATH
. Também funciona muito bem em conjunto com o vcsh para manter as personalizações em backup e sincronizadas.fonte
~/.ssh/config
Como
JAVA_HOME
está definido, você confirmou que esses scripts são originados automaticamente, não é?A única explicação lógica é que isso
PATH
será definido mais tarde. Ele deve ser originalmente definido pelo PAM que lê/etc/environment
e, tanto quanto eu sei, isso acontece antes que os/etc/profile.d/*.sh
arquivos sejam originados. Possivelmente o zsh funciona diferente em comparação com o bash nesse aspecto.fonte
Acabei de encontrar esse problema localmente após executar as atualizações. Parece que o problema principal é que o Drush não sabe onde encontrar uma cópia legítima do php que inclua pdo. Felizmente, ele suporta esconder esse caminho em uma variável de ambiente, então fiz isso na linha de comando:
Isso resolveu o problema, então editei .zshrc e o adicionei ao arquivo, problema resolvido.
fonte
.zshrc
seja usado, o mesmo que a resposta principal ?