Answers:
tl; dr版本:使用 ~/.zshrc
并阅读手册页以了解它们之间的区别:
~/.zshrc
,~/.zshenv
和~/.zprofile
。
在我对凯夫给出的答案的评论中,我说:
这似乎是不正确的-我可以找到的任何zsh文档中都未列出/ etc / profile。
事实证明这是部分不正确的:/etc/profile
可能来自zsh
。但是,只有在zsh
“作为sh
或调用ksh
” 时,才会发生这种情况。在以下兼容模式下:
通常的zsh启动/关闭脚本不会执行。登录shell源/ etc / profile,后跟$ HOME / .profile。如果在调用时设置了ENV环境变量,则$ ENV将在配置文件脚本之后提供。在将ENV的值解释为路径名之前,先对其进行参数扩展,命令替换和算术扩展。[ man zshall,“兼容性” ]。
登录时,Zsh以此顺序获取以下文件:
/ etc / profile
此文件由登录时所有Bourne兼容的shell来获取。
这implys那/etc/profile
是永远读通过zsh
在登录时-我没有与Arch Linux的项目的经验; Wiki对于该发行版可能是正确的,但通常并不正确。该信息是比较zsh的手册页不正确的,似乎并不适用于OS X上的zsh(在路径$PATH
中集/etc/profile
不使其向我的zsh会话)。
我应该在哪里将rvm,python,node等添加到$ PATH的确切位置?
一般来说,我会导出我$PATH
的~/.zshrc
,但它是值得拥有的读zshall手册页,特别是“启动/关闭文件”部分- ~/.zshrc
阅读的互动炮弹,这可能会或可能不适合您的需求-如果你想$PATH
为每个zsh
外壳由你调用(包括interactive
不,无论是login
和不是,等),然后~/.zshenv
是一个更好的选择。
我是否应该使用一个特定的文件(即,我的安装中当前不存在的.zshenv),我当前正在使用的文件之一,或者甚至有关系?
启动时会读取大量文件(请检查链接的man
页面),这是有原因的-每个文件都有特定的位置(每个用户的设置,特定于用户的设置,登录外壳程序的设置,每个外壳程序的设置,等等)。
不必担心~/.zshenv
不存在-如果需要,请制造它,它会被读取。
.bashrc
而.bash_profile
在不被读取zsh
,除非你明确地从源头他们~/.zshrc
或相似; 之间的语法bash
和zsh
是不是总是兼容。这两个.bashrc
和.bash_profile
设计用于bash
设置,而不是zsh
设置。
这是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
您可以在此处获得更多信息。
.bashrc
并且.bash_profile
不被阅读,zsh
因为我目前在中rvm
添加了我的内容,$PATH
在中添加了.bashrc
我的python
内容.bash_profile
,并且两个都很好地添加了。无论如何,我将所有$PATH
出口都移到~/.zshrc
其他所有zsh
配置都存放在这里。我必须承认,我对不同类型的外壳不太熟悉。通过阅读您发布的链接,我猜我使用的是交互式外壳,但是我将进一步阅读以确保...再次感谢!