Arch-Linux
如何使 mkinitcpio busybox ash 源 /etc/profile?
Arch Linux
/usr/lib/initcpio/busybox
由 mkinitcpio-busybox 1.27.2-1 包擁有,並且配置為低功能,例如 CONFIG_FEATURE_USE_INITTAB 未設置。在包含該busybox的自定義initramfs中,我設法獲得了執行原始碼
/etc/profile
工作的ssh網路登錄。在 VGA 顯示器上還可以看到一個灰殼提示。但是,“vga”外殼不是 source
/etc/profile
。問:登錄 Shell 和非登錄 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?
通常,如果使用以 . 開頭的命令名呼叫 shell,則它充當登錄 shell
-
。exec -sh
如果你有一個-sh
在路徑中呼叫的執行檔,它會起作用。BusyBox ash 也支持該-l
選項,因此您可以執行sh -l
.當您登錄時,
login
程序(或sshd
,或任何處理登錄的程序)會負責執行使用者的 shell,並-
在命令名稱中使用前導(命令名稱不必與執行檔的名稱相同,這只是一個非常普遍的約定,login
故意違反)。在這裡,“處理登錄的一切”是你的小腳本,所以你必須照顧它。