UNIX: The Complete Reference, Second Edition, 작성자: Kenneth H. Rosen et al.
로그인한 후 쉘 이름을 명령으로 사용하여 다른 쉘을 시작할 수 있습니다. 예를 들어 Korn 쉘을 시작하려면 명령 프롬프트에 ksh를 입력하십시오. 이 유형의 셸은 로그인 셸이 아니며 사용하기 위해 다시 로그인할 필요가 없지만 여전히 대화형 셸입니다. 즉, 셸을 사용하여 상호 작용하는 대신 명령을 입력하여 셸과 상호 작용합니다. ). 20장에 설명된 대로 스크립트를 실행합니다. 그래픽 인터페이스를 사용할 때 터미널 창에서 실행되는 셸 인스턴스도 대화형 비로그인 셸입니다. 비로그인 셸을 시작하면 .profile, .bash_profile 또는 .login 파일(또는 .logout 파일)은 읽지 않지만 여전히 두 번째 셸 구성 파일(예: .bashrc)은 읽습니다. 즉, 다른 셸 인스턴스를 시작하여 .bashrc에 대한 변경 사항을 테스트할 수 있지만 .profile 또는 .login에 대한 변경 사항을 테스트하려면 로그아웃했다가 다시 로그인해야 결과를 볼 수 있습니다.
위 내용을 보고 있는데 대화형 쉘이 무슨 뜻인지 이해가 되지 않습니다. 터미널을 사용하면 .profile이 읽혀지지 않나요?
또한, Bourne은 대화형 셸이 아니지만 bash/csh는 셸이라고 말하는 것은 무엇을 의미합니까?
답변1
대화형 셸은 단순히 명령을 입력하고 해당 명령의 출력을 얻는 데 사용하는 셸 프로세스입니다. 즉, 상호작용하는 쉘입니다.
따라서 질문에 인용한 발췌문에 명시된 대로 로그인 셸은 수동으로 실행하는 다른 셸과 마찬가지로 대화형입니다. 반대로, 쉘 스크립트를 실행하면 비대화형 쉘이 시작되어 스크립트의 명령을 실행한 다음 스크립트가 완료되면 종료됩니다.
bash
Bourne 쉘은 또는 와 마찬가지로 대화형 쉘로 사용할 수 있습니다 tcsh
. 실제로 FreeBSD와 같은 많은 시스템에서는 쉘을 sh
기본 사용자 쉘로 사용합니다. bash
, , 등과 같은 zsh
최신 셸에는 tcsh
Bourne 셸에 없는 많은 기능이 있어 대화형으로 사용하기가 더 편안하고 편리합니다(명령 기록, 완성 등).
로그인이 아닌 대화형 쉘(즉, 다른 쉘에서 수동으로 시작하거나 터미널 창을 열어서 시작한 쉘)은 .login
또는 .profile
파일을 읽지 않습니다. 이는 로그인 셸( login
시스템 프로세스 또는 X 디스플레이 관리자에 의해 시작되는 셸)에서만 읽고 실행할 수 있으므로 로그인 세션 시작 시 한 번만 적용되는 명령과 설정이 포함되어 있습니다. 따라서 터미널을 시작할 때 생성되는 쉘은 로그인 파일( .login
c 스타일 쉘, 본 스타일 쉘의 경우) 을 읽지 않지만 기타 파일은 .profile
읽습니다 ..cshrc
.bashrc