我想根据某个目录设置我的路径(以及其他一些环境变量),所以我的主目录中有以下文件
export MY_DIR="/path/to/dir"
export PATH=$MY_DIR/bin:$PATH
export MY_OTHER_VAR="$MY_DIR/folder"
我使用以下行在 ~/.zshrc 中获取该内容:
[[ -e ~/my_file.sh ]] && emulate sh -c ' source ~/my_file.sh
但是,当我登录时,$MY_DIR/bin
它不在我的路径中。如果我echo $PATH
,我就到达了应该在的%F{51}~%f
地方。$MY_DIR/bin
但是,MY_DIR 和 MY_OTHER_VAR 设置正确。
我是否做错了什么,或者这是 zsh 中的一些奇怪的错误(它似乎在 bash 中按预期工作)?
编辑
我在我的其他地方source
都使用过,没有任何问题。但是,我尝试将文件移动到并从中获取它。我还尝试使用而不是源,但即使进行了这些更改,我仍然在路径变量中看到相同的内容。实际上,我注意到我在 PATH 变量中看到了当前目录的所有内容,因此,例如,如果我导航到和,我会看到.~
zshrc
/etc/zsh/my_file.sh
etc/zsh/zprofile
.
%F{51}~%f
/etc/zsh/
echo $PATH
%F{51}/etc/zsh%f
要重现的完整代码:
/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"
编辑2
因此,我使用自定义提示,以青色打印我当前的路径。如果我禁用该提示,我的 PATH 变量就会正确设置。在提示脚本中,我使用了一个我称之为path
(小写)的变量。显然,虽然 bash 不会将其与 混淆PATH
,但 zsh 却会。感谢大家的帮助。