Arch Linux는 /usr/lib/initcpio/busybox
mkinitcpio-busybox 1.27.2-1 패키지에 속하며 다음과 같습니다.낮은 기능 구성, 예를 들어 CONFIG_FEATURE_USE_INITTAB가 설정되지 않았습니다.
/etc/profile
busybox가 포함된 사용자 정의 initramfs에서 소스 코드 작업을 수행하기 위해 SSH 네트워크 로그인을 얻을 수 있었습니다 . 아직 하나 있어요금연 건강 증진 협회쉘 프롬프트는 VGA 모니터에 표시됩니다.
그러나 "vga" 쉘은 소스가 아닙니다 /etc/profile
. 묻다:로그인 쉘과 비로그인 쉘의 차이점은 무엇입니까?이 쉘은 로그인 쉘이 아닌 것 같습니다. 쉘은 다음 명령으로 시작됩니다 /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
이 쉘을 소싱 /etc/profile
하거나 (자동) 로그인 쉘로 만들려면 어떻게 해야 합니까 ?
답변1
규칙에 따라 로 시작하는 명령 이름으로 쉘을 호출하면 해당 쉘은 로그인 쉘 역할을 합니다 -
. 이는 path 에서 exec -sh
실행 파일을 호출하는 경우 작동합니다 . -sh
BusyBox ash는 이 -l
옵션 도 지원하므로 sh -l
.
로그인할 때 login
프로그램(또는 sshd
로그인을 처리하는 모든 프로그램)은 명령 이름으로 시작하여 사용자의 셸을 실행하는 일을 담당합니다 -
(명령 이름은 실행 파일 이름과 동일할 필요는 없습니다. 매우 일반적인 규칙이지만 login
의도적으로 위반되었습니다.) 여기서 "로그인된 모든 항목 처리"는 미니 스크립트이므로 이를 처리해야 합니다.