我最近决定将我的个人脚本移动到我的$HOME
.我已将此目录包含在我的$PATH
变量中,但在尝试运行它们时,ZSH 响应“未找到命令”。以下行是我附加的内容.xprofile
PATH="$PATH:~/.local/share/";export PATH
我有一些脚本,~/.local/share/
但无法在 ZSH 中执行它们,但在 bash 中它工作正常。我尝试将上面的 live 添加到我的 中.zshrc
,但这没有用。
答案1
~
不是变量并且行为不像变量。
~
shell在被引用时通常不会展开。您可以在任何 shell 中使用$HOME
代替~
来确保获得主目录的正确路径,而不依赖于 shell 对波浪号字符的特殊处理(这是主要用于交互式 shell 的快捷方式)。
$HOME
做其行为就像您期望变量的行为一样,即当使用双引号引用它时,它会扩展到您的主目录的路径。
另请注意,这不太可能PATH
是不是已经是一个环境变量了。因此不需要导出它。
在zsh
shell 中,要添加~/.local/share
到命令搜索路径的末尾,您还可以执行以下操作
path+=~/.local/share
或者
path+=$HOME/.local/share
数组变量path
是捆绑到标量变量PATH
,这意味着当您按上述方式更新数组时path
,添加的元素将添加到 value 的末尾$PATH
。
答案2
ZSH 启动脚本是~/.zshrc
和~/.zshenv
。我通常将全局环境变量PATH
放在~/.zshenv
.
启动脚本中的一些其他指令可能会覆盖/替换您的PATH
.要查看 zsh 启动期间发生的情况,请运行:
zsh -x 2>&1 </dev/null |grep PATH
启动脚本不会影响已经运行的 shell。要更新这些内容:
- 获取脚本例如
. ~/.zshenv
- 重新执行 zsh (
exec zsh -l
) - 注销并重新登录