“登录外壳”有什么作用?

xhg*_*xhg 4 zsh shell iterm2

最近我遇到终端启动时间慢的情况,所以我研究了一下,发现了一个有趣的事情。我在 MacBook 上使用 iTerm。有一个选项选择默认行为:

登录 shell 或 zsh

如果我选择“Login shell”,它会提示Last login: Fri Mar 24 17:27:28 on ttys007(下左);如果我选择“zsh”,它不会提示任何内容,并且启动时间非常快(下面右侧)。

登录shell和zsh的区别

我使用的默认 shell 是zsh,我想知道“登录 shell”内部发生了什么以及为什么它与纯 shell 相比如此慢zsh

use*_*686 5

“登录 shell”在登录模式下运行常用的 shell(zsh 或 bash),其中 shell 处理附加配置文件 \xe2\x80\x93,例如.zlogin.bash_profile。这些文件可能有太多不必要的命令 \xe2\x80\x93 尝试使它们尽可能轻量。

\n\n

您可以尝试运行zsh -l并与常规比较zsh。(虽然-l不是标准的“登录模式”开关,但它很常见。)

\n\n
\n\n

(尽管恕我直言,终端应用程序甚至在“登录模式”下运行 shell 都有点奇怪\xe2\x80\xa6 这有点违背了能够配置不同启动命令的整个想法。)

\n

  • 是的,我上次尝试时 rvm 也非常慢。但一般来说,任何定义 _functions_ 的内容都应该转到主配置文件 – `.zshrc` 或 `.bashrc` – 而不是“登录”文件。 (2认同)