我在 Mac 上使用 Z shell,并在我的主目录中的 .zshrc 和 .profile 中都有一些设置。
我发现当我只有.profile时,zsh在新会话中导入.profile;当我同时拥有 .profile 和 .zshrc 时,zsh 仅导入 .zshrc 而忽略 .profile。
有没有办法让 shell 尊重这两个设置文件,或者在 .zshrc 中导入 .profile?
答案1
Zsh 通常是来源.zprofile
而不是.profile
登录时。 (.zshrc
如果登录不进入交互式会话,它将不会获取源。)但是,如果您希望它获取源.profile
并且其中没有任何特定于另一个 shell 的内容(例如特定于 bash 的内容),则您可以随时放入source .profile
该.zprofile
文件。
.zshrc
在调用交互式 shell 时获取,无论它是否是登录 shell。.zprofile
但是,如果您没有登录,它就不会再次获取源。
我会将您想要的所有内容始终放在两个文件之一中,然后让另一个文件提供该文件。例如,我将所有别名和环境变量保存在 my 中.zshrc
,并将该行保存source $HOME/.zshrc
在 my 中,.zprofile
这样即使在非交互式登录 shell 中,它也始终会被读取。
只是要确保不要让它们互相提供来源,这很诱人,因为这显然会造成无限循环。
您还可以使用第三个文件来完成您想要做的事情,并让它们都获取第三个文件。