zsh Variável PATH não definida corretamente de outra variável de ambiente

1

Eu quero definir o meu caminho (e algumas outras variáveis de ambiente) com base em um determinado diretório, então eu tenho o seguinte arquivo no meu diretório home

export MY_DIR="/path/to/dir"
export PATH=$MY_DIR/bin:$PATH
export MY_OTHER_VAR="$MY_DIR/folder"

Eu obtenho isso no meu ~ / .zshrc com a seguinte linha: [[ -e ~/my_file.sh ]] && emulate sh -c ' source ~/my_file.sh

No entanto, quando eu faço login, $MY_DIR/bin não está no meu caminho. Se eu echo $PATH , obtenho %F{51}~%f onde $MY_DIR/bin deveria ser. No entanto, MY_DIR e MY_OTHER_VAR foram definidos corretamente.

Eu fiz algo errado, ou isso é algum bug estranho no zsh (parece funcionar como esperado com o bash)?

Editar

Usei source e ~ em outro lugar no meu zshrc sem problemas. No entanto, tentei mover o arquivo para /etc/zsh/my_file.sh e fazer o sourcing de etc/zsh/zprofile . Eu também tentei usar . em vez de fonte, mas mesmo com essas mudanças, ainda vejo o mesmo %F{51}~%f na minha variável de caminho. Na verdade, notei que qualquer que seja o meu diretório atual está na variável PATH, por exemplo, se eu navegar para /etc/zsh/ e echo $PATH , vejo %F{51}/etc/zsh%f .

Código completo para reproduzir:

/etc/zsh/zprofile :

[[ -e /etc/zsh/my_file.sh ]] && emulate sh -c ' . /etc/zsh/my_file.sh'

/etc/zsh/my_file.sh :

export MY_DIR="/home/matt/code"
export PATH="$MY_DIR/bin:$PATH"
export MY_PYTHON="$MY_DIR/python"

EDIT 2

Estou usando um prompt personalizado que imprime meu caminho atual em ciano. Se eu desabilitar esse prompt, minha variável PATH será definida corretamente. No script do prompt, eu uso uma variável que chamo de path (minúscula). Aparentemente, enquanto bash não confunde com PATH , zsh faz. Obrigado a todos pela ajuda.

    
por Matt Spicer 14.06.2018 / 01:53

1 resposta

1

Meu problema não estava no código em que eu estava tentando definir o caminho para "$MY_DIR/bin:$PATH" , mas em um script diferente que eu estava pesquisando em .zshrc . Estou usando um script personalizado para definir meu prompt de shell no qual usei uma variável declarada como path , pensando que não entraria em conflito com a variável de ambiente PATH , mas, como apontado por @Adaephon nos comentários, zsh sincroniza bidirecionalmente a palavra-chave path com PATH .

Assim, para mim, a solução foi renomear a variável na minha função prompt para cur_path (ou similar). A tentativa de definir a variável como local path resultará em um segfault .

    
por 15.06.2018 / 00:52