What / Where / How é o local apropriado para configurar a variável de ambiente PATH no zsh?

0

O manual oficial do zsh parece recomendar que você configure a variável de ambiente PATH no zshenv:

link

'.zshenv' is sourced on all invocations of the shell, unless the -f option is set. It should contain commands to set the command search path, plus other important environment variables.
'.zshenv' should not contain commands that produce output or assume the shell is attached to a tty.

Na minha experiência, isso é realmente uma má ideia, porque muitos utilitários manipulam seu PATH para o propósito de colocá-lo em algum tipo de ambiente de área restrita. Exemplos desse padrão muito comum incluem python virtualenv, nix-shell e outros. Se você apenas definir indiscriminadamente o seu PATH em .zshenv , você vai chocar essas modificações e quebrar o sandbox.

Para resolver isso, configurei uma variável de ambiente depois que o PATH foi configurado e verifiquei se a variável de ambiente não está configurada antes de fazer a configuração PATH no zshenv.

O problema com essa abordagem é que muitos sistemas operacionais definirão explicitamente PATH (ignorando qualquer valor anterior) em algo como /etc/profile . Quando os shells subsequentes são iniciados, minha configuração evita a reconfiguração de PATH porque ela já foi configurada, mas essas alterações foram destruídas pelo que está em /etc/profile .

Em resumo: esse negócio de configuração de PATH é muito mais complicado do que se poderia esperar. Eu sinto que realmente tenho uma compreensão clara de como tudo funciona e, no entanto, não está muito claro para mim o que "a coisa certa a fazer" é.

Eu suspeito que a existência de shells 'login' e 'non-login' é parcialmente uma tentativa de resolver este problema, mas o problema, mas o manual do zsh parece ser bem claro no ponto que PATH deveria ser configurado em .zshenv . Parece estranho para mim que você teria que fazer o maquinário variável de ambiente que eu configurei apenas para conseguir algo como um virtualenv para funcionar.

    
por imalison 30.05.2018 / 23:45

0 respostas