登录 shell 的预期目的是什么?

Tim*_*Tim 3 bash login

Bash手册说:

登录 shell 的参数零的第一个字符是“-”,或者使用 --login 选项调用。

它根据启动登录 shell 的方式定义了登录 shell。

或者,是否可以根据其预期目的定义登录 shell?

例如,登录shell可以定义为需要用户登录的shell吗?例如,在交互式非登录 bash shell 中,当我运行bash --login创建 bash 登录 shell 时,我不必登录。是因为我的用户名和密码被隐式缓存和重用,还是干脆不执行登录的工作?

如果登录 shell 不一定要执行登录,那么它的预期目的是什么可以从非登录 shell 中表征登录 shell?

谢谢。

Ste*_*itt 14

登录由 shell 以外的工具处理,例如 login它本身或您的桌面管理器(在 PAM 和各种其他工具的帮助下)。

登录 shell的目的不是处理登录,而是作为登录会话中的第一个 shell 适当地表现:主要是,这意味着处理每个登录会话只应处理一次的启动文件,并保护登录会话免受不需要的与某些系统功能的交互(特别是作业暂停)。

至少在 Bash 中实现的登录 shell 的细节如下:

  • 登录shell从处理的命令/etc/profile,那么它发现中的第一个文件~/.bash_profile~/.bash_login~/.profile(除非它是启动一个非交互式登录shell而不--login选项);
  • 退出登录 shelllogout而不是exit;
  • 退出登录 shell 会挂断所有作业;
  • 登录 shell 不能被挂起;
  • 登录 shell 设置HOME变量(POSIXly 正确模式除外);
  • 登录外壳设置login_shell外壳选项。

  • 1. 不,它适用于所有交互式登录 shell。你还在谈论非交互式登录shell吗?2. 我阅读了 Bash 源代码。 (2认同)