我爱zsh
,但我不知道在哪里把我的$PATH
和其他变量的断言? 我发现,它们散布在文件之间.zshrc
.zprofile
.bashrc
.bash_profile
,有时一倍。
我认识到,具有内部的任何bash
,因为我使用的文件并没有太大的意义看zsh
,但正是我应该把我的rvm
, python
, node
等添加到我的$PATH
?
有没有我应该使用(即特定的文件.zshenv
其当前不存在在我的安装),我目前使用的手机之一,或者它甚至重要吗?
TL;博士版本:使用~/.zshrc
和阅读man page了解之间的差异:
~/.zshrc
, ~/.zshenv
和~/.zprofile
。
关于我的评论
在我的评论附答案千电子伏了 ,我说:
这似乎是不正确的 - / etc / profile文件没有任何文件的zsh我能找到中列出。
这证明是部分不正确: /etc/profile
可以通过来源zsh
。 然而 ,如果该只发生zsh
被“援引为sh
或ksh
”; 在这些兼容模式:
通常zsh的启动/关机脚本不会被执行。 登录壳源/ etc / profile文件,然后$ HOME / .profile文件。 如果ENV环境变量设置上调用,$ ENV在配置文件脚本后采购。 ENV的值被解释为一个路径名之前进行参数扩展,命令替换和算术扩展。 [ 人zshall, “兼容性” ]。
该ArchWiki ZSH链接说:
登录时,源岩组按此顺序下列文件:
/ etc / profile文件
该文件由登录时的所有兼容Bourne shell引用
这是implys /etc/profile
总是被读取 zsh
在登录-我没有与Arch Linux的项目的经验; 维基可能是该分发正确的,但它不是通常是正确的。 相比zsh的手册页的信息是不正确的,似乎并不适用于zsh的在OS X(在路径$PATH
中设置/etc/profile
不使其向我的zsh会话)。
为了解决这样的问题:
正是在那里我应该把我的RVM,蟒蛇,节点等添加到我的$ PATH?
一般来说,我会导出我的$PATH
从~/.zshrc
,但它是值得拥有的读zshall手册页,特别是“启动/关闭文件”部分- ~/.zshrc
阅读在交互 shell,可能会或可能不能满足您的需求-如果你想在$PATH
为每zsh
由您(包括调用壳interactive
,而不是,都login
不,等等),然后~/.zshenv
是一个更好的选择。
有没有我应该使用(即.zshenv其当前不存在在我的安装),我目前使用的手机之一,或者它甚至关系一个特定的文件?
有一群在启动时读取文件(检查链接的man
页),并有一个原因是-每一个文件都有它特别的地方(为每个用户设置,为用户特定的,用于登录shell设置的设置,对于每一个shell设置等)。
不要担心~/.zshenv
不存在-如果你需要它,做它,它就会被读取。
.bashrc
和.bash_profile
不被读取zsh
,除非你明确地从源头它们~/.zshrc
或相似; 之间的语法bash
和zsh
并不总是兼容。 双方.bashrc
和.bash_profile
是专为bash
设置,而不是zsh
设置。
下面是从下启动/关闭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