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.