zsh 配置 - 导出还是不导出?

zsh 配置 - 导出还是不导出?

在我的设置变量时~/.zshrc我可以使用export

export PATH=/some/path

或不

PATH=/some/path

它们有何不同以及我应该使用哪一个?

答案1

如果您希望从 zsh 运行的程序能够看到变量,请将其导出。
对于路径,您可能希望使用导出。您可能希望使用,
而不是,除非您打算完全清除系统预设路径。export PATH=/some/pathexport PATH="$PATH:/some/path"

答案2

Demure 已经回答了您的具体问题。但是,这是一个zsh关于 的问题PATH。因此,这里还有另一点:除了标准变量 之外$PATH,还有$path,它是一个数组。在这里您可以看到区别(冒号或不是...):

$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$ print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin

两种变体都会自动保持同步。那么,使用数组有什么好处呢?

  • 后者您可以通过声明typeset -U path“仅保留每个重复值的第一次出现”(来自man zshbuiltins)。这意味着即使您连续获取您的~/.zshrc(因为您更改了它或其他原因),也可以保持您的路径干净,并且不会一次又一次地用相同的值弄乱它。
  • 您可以使用path+=(/new/path)将新目录添加到 PATH。要删除元素,您必须使用一些技巧,例如https://stackoverflow.com/q/3435355/2037712或者http://www.zsh.org/mla/users//2005/msg01132.html
  • 您可以通过以下方式轻松循环遍历 PATH 中的元素for i ($path) { print $i # or do something else }

最后,这是我的配置的摘录:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH

相关内容