如何使 Z shell 同时尊重 ~/.zshrc 和 ~/.profile ?

如何使 Z shell 同时尊重 ~/.zshrc 和 ~/.profile ?

我在 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 中,它也始终会被读取。

只是要确保不要让它们互相提供来源,这很诱人,因为这显然会造成无限循环。

您还可以使用第三个文件来完成您想要做的事情,并让它们都获取第三个文件。

相关内容