【问题标题】:How to start a linux shell as from /etc/inittab如何从 /etc/inittab 启动 linux shell
【发布时间】:2024-08-26 04:05:02
【问题描述】:

我们曾经在 /etc/inittab 中有两个条目:

::sysinit:/etc/init.d/rcS
ttyS0::respawn:-/bin/sh

rcS 是一个通常启动我们的应用程序的 shell 脚本,但在特殊情况下,我们调用“return”来终止它,这显然让 /bin/sh 接管了 tty,因为我们得到了一个 shell 提示,我们可以在其中执行一些操作维护。

现在 inittab 看起来像这样:

::once:/etc/init.d/rcS

我们现在通过在 rcS 脚本中执行“/bin/bash -i”来启动 shell,因为我们不想总是运行通常从不使用的第二个 shell(由于内存限制)。

但是创建的 bash 没有作业控制功能,这是非常有限的。

所以我的问题是,我能否像之前的解决方案中的 init 处理方式一样创建一个 shell(并可能终止 rcS 脚本),以便我再次获得一个带有作业控制的 shell?

【问题讨论】:

  • 您可能会在 superuser.com 上获得更好的答案,但我会尝试使用 exec login -f root,您目前拥有 /bin/bash -i。我认为正确设置了终端。

标签: bash interactive init job-control


【解决方案1】:

这取决于您正在运行的操作系统。这是一个适用于 RHEL/CentOS 的示例。

6:2345:respawn:/sbin/mingetty --autologin root tty6

这是其他人为类似技巧所做的。

openvt -f -c 12 -w -- sh -c "unicode_start; echo -e '$NORPT'; exec $LOGINSH" >/dev/tty1

【讨论】:

    最近更新 更多