.profile 与 .zshrc 的执行顺序和目的

.profile 与 .zshrc 的执行顺序和目的

几个问题:

  • .profile和的独特目的是什么.zshrc
  • 当 shell 启动时首先调用什么?

答案1

~/.profile仅在兼容模式zsh下运行时才会加载,否则它会读取,以及交互式和登录 shell。sh.zprofile.zshrc.zlogin

它们的目的从加载时开始。就像.zshrc为交互式 shell 加载一样,在那里设置您期望的别名等。

.profile具有一个附加属性,即它也被其他几个 shell 以某种方式加载(例如bash,除非它找到更具体的内容;或ksh),因此您可以在此文件中存储多个 shell 的配置。

相关摘录自man zshall(重点是我的):

启动/关闭文件
首先从 读取命令/etc/zshenv;[...]

然后从 读取命令$ZDOTDIR/.zshenv。如果 shell 是登录 shell,则从 读取命令,/etc/zprofile然后从 读取$ZDOTDIR/.zprofile。然后,如果 shell 是交互式的,则从 读取命令,/etc/zshrc然后从 读取$ZDOTDIR/.zshrc。最后,如果 shell 是登录 shell,/etc/zlogin$ZDOTDIR/.zlogin 读取 和。

兼容性
当 Zsh 分别被调用为 sh 或 ksh 时,它会尝试模拟 sh 或 ksh;[...]

不执行通常的 zsh 启动/关闭脚本。登录 shell 源/etc/profile后跟$HOME/.profile。如果在调用时设置了 ENV 环境变量,则$ENV在配置文件脚本之后获取 。 的值ENV在被解释为路径名之前要经过参数扩展、命令替换和算术扩展。请注意,PRIVILEGED 选项还会影响启动文件的执行。

答案2

zsh 手册第 5 节“文件”[1] 有一节显示了登录和注销时读取的点文件的精确顺序。这是 zsh 特有的,并不涉及与 的交互.profile,即兼容性。尽管如此,我发现这对构造我的 zsh 点文件很有帮助。

[1]http://zsh.sourceforge.net/Doc/Release/Files.html#Startup_002fShutdown-Files

相关内容