为什么登录不能作为子进程调用并在登录 shell 之外的任何 shell 中执行?

为什么登录不能作为子进程调用并在登录 shell 之外的任何 shell 中执行?

从联机帮助页login

登录程序用于与系统建立新的会话。它通常是通过响应用户终端上的登录:提示来自动调用的。 登录对于 shell 来说可能是特殊的,并且不能作为子进程调用。当从 shell 调用时,login 应作为 exec login 执行,这将导致用户从当前 shell 退出(从而阻止新登录的用户返回到调用者的会话)。尝试从任何 shell 执行登录,但登录 shell 会产生错误消息。

在图形控制台中,我可以exec sudo login t在终端模拟器中的交互式非登录 bash shell 上运行lxterminal。那怎么办”登录对于 shell 来说可能是特殊的,并且不能作为子进程调用“ 和 ”尝试从任何 shell 执行登录,但登录 shell 将产生错误消息“ 意思是?

但我也注意到,当我通过 Ctrl+Alt+F2 切换到文本控制台时,我收到了错误消息,它们与引号有关吗?谢谢。

在此输入图像描述

答案1

登录 shell 很特殊,因为它设置环境并运行登录脚本是“会议领导者”(因此,如果被杀死,它的所有子进程也会被杀死。)除了这些项目之外,它本质上与其他 shell 相同。

但是,您在控制台上遇到的错误与以下内容完全无关:这是 USB 设备 ( )login的错误,已讨论EPROTO这里这里。您可能想要尝试在另一台计算机上测试网络适配器、更改所使用的 USB 端口、更改电缆(如果使用电缆),并可能禁用自动挂起。

相关内容