
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
파일을 읽지 않습니다. 이는 로그인 쉘(시스템 프로세스 또는 X 디스플레이 관리자에 의해 시작된 쉘)에 의해서만 읽고 실행되므로 login
여기에 포함된 명령과 설정은 로그인 세션이 시작될 때 한 번만 적용됩니다. 따라서 터미널을 시작할 때 생성되는 셸은 로그인 파일( .login
c 스타일 셸, Bourne 스타일 셸)을 읽지 않지만 , etc 파일은 .profile
읽습니다 ..cshrc
.bashrc