ZSH 不读取 $PATH

ZSH 不读取 $PATH

我最近决定将我的个人脚本移动到我的$HOME.我已将此目录包含在我的$PATH变量中,但在尝试运行它们时,ZSH 响应“未找到命令”。以下行是我附加的内容.xprofile

PATH="$PATH:~/.local/share/";export PATH

我有一些脚本,~/.local/share/但无法在 ZSH 中执行它们,但在 bash 中它工作正常。我尝试将上面的 live 添加到我的 中.zshrc,但这没有用。

答案1

~不是变量并且行为不像变量。

~shell在被引用时通常不会展开。您可以在任何 shell 中使用$HOME代替~来确保获得主目录的正确路径,而不依赖于 shell 对波浪号字符的特殊处理(这是主要用于交互式 shell 的快捷方式)。

$HOME 其行为就像您期望变量的行为一样,即当使用双引号引用它时,它会扩展到您的主目录的路径。

另请注意,这不太可能PATH不是已经是一个环境变量了。因此不需要导出它。

zshshell 中,要添加~/.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)
  • 注销并重新登录

相关内容