我喜欢zsh
,但我不确定在哪里放置我的$PATH
和其他变量断言?我发现它们分散在文件之间.zshrc
.zprofile
.bashrc
.bash_profile
,有时会加倍。
我意识到在bash
文件中包含任何内容并没有多大意义,因为我正在使用zsh
,但是我应该将我rvm
的 ,python
等node
添加到我的$PATH
?
是否有我应该使用的特定文件(即我的安装中当前.zshenv
不存在的文件),我当前正在使用的文件之一,或者它甚至重要吗?
tl;博士版本:使用~/.zshrc
并阅读手册页以了解以下之间的区别:
~/.zshrc
,~/.zshenv
和~/.zprofile
.
在我对kev给出的答案的评论中,我说:
这似乎是不正确的 - /etc/profile 没有在我能找到的任何 zsh 文档中列出。
事实证明这部分不正确:/etc/profile
可能来自zsh
. 但是,这仅在zsh
“调用为sh
或ksh
”时才会发生;在这些兼容模式下:
不执行通常的 zsh 启动/关闭脚本。登录 shell 源 /etc/profile 后跟 $HOME/.profile。如果在调用时设置了 ENV 环境变量,则 $ENV 源自配置文件脚本。ENV 的值在被解释为路径名之前经过参数扩展、命令替换和算术扩展。[ man zshall,“兼容性” ]。
登录时,Zsh 按以下顺序获取以下文件:
/etc/profile
该文件由所有 Bourne 兼容的 shell 在登录时获取
这意味着登录/etc/profile
时总是会读到- 我对zsh
Arch Linux 项目没有任何经验;wiki 可能对那个发行版是正确的,但它通常不正确。与 zsh 手册页相比,该信息不正确,并且似乎不适用于 OS X 上的 zsh($PATH
设置中的路径/etc/profile
不会进入我的 zsh 会话)。
我应该将我的 rvm、python、node 等添加到我的 $PATH 的确切位置?
一般来说,我会导出我$PATH
的 from ~/.zshrc
,但值得阅读zshall手册页,特别是“启动/关闭文件”部分 -~/.zshrc
用于交互式shell,它可能适合也可能不适合您的需求 - 如果您想要$PATH
for您调用的每个zsh
shell(两者interactive
都不是,两者login
都不是,等等),然后~/.zshenv
是一个更好的选择。
是否有我应该使用的特定文件(即我的安装中当前不存在的 .zshenv),我当前正在使用的文件之一,或者它是否重要?
启动时读取了一堆文件(检查链接man
页面),这是有原因的 - 每个文件都有其特定的位置(每个用户的设置,用户特定的设置,登录 shell 的设置,每个 shell 的设置, ETC)。
不用担心~/.zshenv
不存在——如果你需要它,制作它,它会被阅读。
.bashrc
并且不会.bash_profile
被阅读,除非您明确地从或类似来源获得它们;和之间的语法并不总是兼容的。两者和都是为设置而设计的,而不是设置。zsh
~/.zshrc
bash
zsh
.bashrc
.bash_profile
bash
zsh
这是 STARTUP/SHUTDOWN FILES 部分下 zsh 手册页中的文档。
Commands are first read from /etc/zshenv this cannot be overridden.
Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the
former affects all startup files, while the second only affects global
startup files (those shown here with an path starting with a /). If
one of the options is unset at any point, any subsequent startup
file(s) of the corresponding type will not be read. It is also possi-
ble for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and
GLOBAL_RCS are set by default.
Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login
shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zpro-
file. Then, if the shell is interactive, commands are read from
/etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is a login
shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.
从这里我们可以看到读取的订单文件是:
/etc/zshenv # Read for every shell
~/.zshenv # Read for every shell except ones started with -f
/etc/zprofile # Global config for login shells, read before zshrc
~/.zprofile # User config for login shells
/etc/zshrc # Global config for interactive shells
~/.zshrc # User config for interactive shells
/etc/zlogin # Global config for login shells, read after zshrc
~/.zlogin # User config for login shells
~/.zlogout # User config for login shells, read upon logout
/etc/zlogout # Global config for login shells, read after user logout file
您可以在此处获得更多信息。
我有类似的问题(在 bash 终端命令工作正常但 zsh 显示命令未找到错误)
只需将您之前在 ~/.bashrc 中粘贴的内容粘贴到:
~/.zshrc