Arch Linux /usr/lib/initcpio/busybox由包mkinitcpio-busybox 1.27.2-1拥有,是配置较低的功能,例如,没有设置CONFIG_FEATURE_USE_INITTAB。
在一个包含busybox的自定义initramfs中,我设法获得了执行源/etc/profile工作的ssh网络登录。另外,在VGA监视器上还可以看到一个灰壳提示。
然而,"vga“外壳并不是/etc/profile的源。问:登录壳和非登录壳的区别?让我觉得这个shell不是登录shell。该shell由/init启动:
exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'回归:
exec setsid sh -c 'exec sh -i </dev/tty1 >/dev/tty1 2>&1'exec setsid sh -c 'exec sh - </dev/tty1 >/dev/tty1 2>&1'exec setsid sh -c 'exec -sh </dev/tty1 >/dev/tty1 2>&1'如何使这个busybox ash shell成为源/etc/profile和/或使其成为(自动)登录shell?
发布于 2017-12-24 18:02:59
通常,如果使用以-开头的命令名调用shell,则shell充当登录shell。exec -sh的工作原理是在路径中有一个名为-sh的可执行文件。BusyBox ash还支持-l选项,因此您可以运行sh -l。
当您登录时,login程序(或sshd,或任何正在处理登录的内容)负责使用命令名中的前导-运行用户的shell (命令名不必与可执行文件的名称相同,这只是login故意违反的一个非常常见的约定)。在这里,“无论什么是处理登录”是你的迷你脚本,所以你必须照顾它。
https://unix.stackexchange.com/questions/412821
复制相似问题