Variáveis ambientais que também são usadas por shells não interativos (digamos, um script de shell que você escreveu) devem entrar .zshenv.
Francisco
~/.zshenvTambém é fornecido por shells de login? Deve PATHser definido lá?
Jordelver #
1
PATHé provavelmente o melhor exemplo de variável que deve ser definida por dentro ~/.zshenv, esse arquivo é obtido por qualquer sessão do zsh (a menos que você use alguma opção para desativá-lo). Veja man zshpara uma revisão de quais arquivos são obtidos e em que ordem.
Francisco
Ok, obrigado @Francisco, vou ler a página do manual.
Jordelver #
Respostas:
21
Se você deseja que os programas sejam executados a partir do zsh para ver o var, exporte-o.
Para o caminho, você provavelmente deseja exportar.
Em vez de export PATH=/some/pathvocê provavelmente deseja export PATH="$PATH:/some/path", a menos que pretenda limpar completamente o caminho predefinido do sistema.
Isso é ótimo, obrigado. Agora vou usar a exportação como regra geral.
Jordelver
21
O Demure já respondeu sua pergunta específica. No entanto, esta é uma zshpergunta e sobre PATH. Então, aqui está outro ponto: Além da variável padrão $PATH, há também $path, que é uma matriz. Aqui você vê a diferença (dois pontos ou não ...):
Ambas as variantes são mantidas automaticamente em sincronia. Então, qual é o benefício de usar uma matriz?
Você pode declarar via typeset -U path"manter apenas a primeira ocorrência de cada valor duplicado" (de man zshbuiltins). Isso significa que isso mantém seu caminho limpo, mesmo que você o adquira sucessivamente ~/.zshrc(porque você o alterou ou o que seja) e não o encha com os mesmos valores repetidamente.
Obrigado, essa foi realmente uma pergunta de acompanhamento. Vou olhar para gerenciar meu caminho usando em pathvez de PATH.
Jordelver #
1
Fico feliz em ouvir como eu já temia que eu sou OT. Btw. Outra vantagem que esqueci: você pode facilmente fazer um loop sobre os elementos com for i ($path) { print $i # or do something else }.
.zshenv
.~/.zshenv
Também é fornecido por shells de login? DevePATH
ser definido lá?PATH
é provavelmente o melhor exemplo de variável que deve ser definida por dentro~/.zshenv
, esse arquivo é obtido por qualquer sessão do zsh (a menos que você use alguma opção para desativá-lo). Vejaman zsh
para uma revisão de quais arquivos são obtidos e em que ordem.Respostas:
Se você deseja que os programas sejam executados a partir do zsh para ver o var, exporte-o.
Para o caminho, você provavelmente deseja exportar.
Em vez de
export PATH=/some/path
você provavelmente desejaexport PATH="$PATH:/some/path"
, a menos que pretenda limpar completamente o caminho predefinido do sistema.fonte
O Demure já respondeu sua pergunta específica. No entanto, esta é uma
zsh
pergunta e sobrePATH
. Então, aqui está outro ponto: Além da variável padrão$PATH
, há também$path
, que é uma matriz. Aqui você vê a diferença (dois pontos ou não ...):Ambas as variantes são mantidas automaticamente em sincronia. Então, qual é o benefício de usar uma matriz?
typeset -U path
"manter apenas a primeira ocorrência de cada valor duplicado" (deman zshbuiltins
). Isso significa que isso mantém seu caminho limpo, mesmo que você o adquira sucessivamente~/.zshrc
(porque você o alterou ou o que seja) e não o encha com os mesmos valores repetidamente.path+=(/new/path)
para adicionar um novo diretório ao seu PATH. Para remover um elemento, você precisa usar alguns truques, consulte, por exemplo, /programming//q/3435355/2037712 ou http://www.zsh.org/mla/users//2005/msg01132.htmlfor i ($path) { print $i # or do something else }
Finalmente, aqui está um trecho da minha configuração:
fonte
path
vez dePATH
.for i ($path) { print $i # or do something else }
.