我正在寻找有关zsh的各个启动文件中应包含哪些内容以及不应包含哪些内容的指南。

我了解这些文件的来源顺序以及它们的来源条件,但是我仍然不清楚每个都应该包含什么。

评论

参见zsh.sourceforge.net/Intro/intro_3.html

#1 楼

以下是每个文件倾向于包含的内容的非排他性列表:

由于.zshenv始终是源文件,因此它通常包含导出的变量,这些变量应可供其他程序使用。例如,经常在$PATH中设置$EDITOR$PAGER.zshenv。另外,您可以在$ZDOTDIR中设置.zshenv来为其余的zsh配置指定其他位置。

.zprofile.zlogin基本相同,除了它的来源是.zshrc之前的,而.zlogin是在.zshrc之后的。根据zsh文档,“对于ksh风扇,.zprofile.zlogin的替代产品;虽然可以根据需要当然将两者一起使用,但它们不能一起使用。”


.zshrc用于交互式外壳程序配置。您可以使用setoptunsetopt命令在此处设置交互式外壳程序的选项。您还可以加载外壳模块,设置历史记录选项,更改提示,设置zle和完成等等。您还可以设置仅在交互式外壳程序中使用的所有变量(例如$LS_COLORS)。

.zlogin源于登录外壳程序的开头,但在.zshrc之后(如果该外壳程序也是交互式的)。该文件通常用于使用startx启动X。某些系统在启动时启动X,因此此文件并不总是很有用。

.zlogout有时用于清除和重置终端。退出时会被调用,而不是打开时被调用。
您应该浏览Github随机用户的配置文件,以更好地了解每个文件应包含的内容。

评论


出于清楚起见,.zlogin源自.zshrc(有关详细信息,请参见man zshall)。

–亚伦
15年3月31日在16:09

请注意,在.zshenv中设置$ PATH时,所有其他文件都将在此文件之后提供,这些文件将覆盖此值。请参阅zsh.org/mla/users/2003/msg00600.html。

– Beau Barker
2015年10月6日,0:19

$ LANG和$ LC_ALL应该去哪里?

–Lenar Hoyt
2015年11月24日19:41

只是为了我自己的笔记/确认并为了帮助其他人,最终命令是.zshenv→[如果登录则为.zp​​rofile]→[如果是交互式则为.zshrc]→[如果登录则为.zlogin]→[有时为.zlogout]。

–加百利·L。
16年5月18日在20:48



我应该在哪里放置别名?

–警报
20年8月26日在17:48

#2 楼

在我看来,这里列出了每个文件应该/不应该包含的内容:
.zshenv
[每次阅读]
此文件始终是源文件,因此应设置环境变量需要经常更新。 PATH(或其关联的对应路径)是一个很好的例子,因为您可能不想重新启动整个会话以使其更新。通过在该文件中进行设置,重新打开终端仿真器将启动一个更新了PATH值的新Zsh实例。
但是请注意,即使启动Zsh来运行单个命令(使用-c时,也会读取该文件)选项),甚至可以使用make之类的其他工具。您应该非常小心,不要修改标准命令的默认行为,因为它可能会破坏某些工具(例如通过设置别名)。
.zprofile
[登录时阅读]
我个人认为类似于.zshenv的文件,但用于应设置一次或不需要经常更新的命令和变量:

环境变量以配置工具(编译标志,数据文件夹位置等)
执行命令(例如SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))")的配置可能会花费一些时间。

如果修改此文件,则可以通过运行登录Shell来应用配置更新:
exec zsh --login

.zshrc
[交互式阅读时]
我在这里放置了仅用于交互式使用的所有内容:

提示,
命令完成,
/>命令校正,
命令建议,
命令突出显示,
输出颜色,
键绑定,
命令历史记录管理,
其他杂项int主动工具(auto_cd,manydots-magic)...

.zlogin
[登录时读取]
此文件类似于.zprofile,但在.zshrc之后读取。您可以考虑将外壳程序在.zlogin执行时完全设置
,因此,我用它来启动不修改外壳程序行为的外部命令(例如登录管理器)。
.zlogout
[注销时阅读] [在登录外壳中]
在这里,您可以清除终端或登录时设置的任何其他资源。
我如何选择放置设置的位置

如果非交互式运行的命令需要它:.zshenv

是否应该在每个新的外壳上对其进行更新:.zshenv

如果它运行一个可能花费一些时间的命令完成时间:.zprofile

如果它与交互式用法有关:.zshrc

如果它是在完全安装shell时运行的命令:.zlogin

如果它释放登录时获取的资源:.zlogout



评论


不信任此评论,这不是100%正确的。例如。 .zprofile [登录时读取]不正确-我在其中添加了一些PATH添加项,但没有看到它们。将.zshrc用于交互式shell /终端,将.zshenv用于非交互式shell /终端(.zshenv可能是最安全的选择,可能所有的PATH修改都应该放在其中)。

–伊万·什(IvanŠ)
20 Dec 3'14:13



#3 楼

不要在ssh-agent中放置.zshenv呼叫。它导致我的less命令不再显示任何文本文件,可能是因为其选项是由Prezto(export LESS='-F -g -i -M -R -S -w -X -z-4'中的.zprofile)自定义的。