几个问题:
.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