2012-05-09 5 views
1

저는 배쉬를 시작하고 일반적으로 쉘을 사용하는 초심자입니다. 내가 터미널을 열 때이 같은 메시지와 함께 제공 : MyUserName 에다 파란색에bash 프롬프트 - 종료 의미

[email protected]:~> 

, dev94 빨간색이고> 녹색에은 (나는이 색상 구성이 내 .bashrc에 아마 것을 이해 파일). 여기 제 질문은 : 나는 출구를 입력하고 Enter 키를 누르 때이 문제가 발생합니다 :

[email protected]:~> 
exit 
exit 
[email protected]:~> 

MyUserName 에다의 @의 dev94 : ~> 색상없이 모두 검은 색입니다. 나가기 전에 타이포그래피와 색깔이없는 것 사이의 차이점은 무엇입니까? (첫 번째 출구 만 입력했는데 두 번째 출구는 Enter 키를 누르면 그 자체가 나옵니다. 두 번째 출구가 어디서 오는지 궁금합니다.) 모든 쉘에서 배시/껍질일까요?

다시 exit를 입력하면 (무색 프롬프트에서) Enter 키를 누르면 쉘이 닫힙니다. 쉘 프로세스가 종료되고 창이 닫히는 것을 이해할 수 있습니다. 내 두 번째 질문 : 컬러 프롬프트 자체에서 처음 입력을 종료했을 때 왜 닫히지 않았습니다. 왜 첫 번째 종료 명령에 대해 색깔이있는 프롬프트에서 무색 프롬프트로 전환 되었습니까?

감사합니다.

+5

'.bashrc'(또는'.profile' 등)가 완전히 새로운 쉘을 시작하는 것처럼 들리지만, 동작이 의미있는 것처럼 보일뿐입니다. 'exit' 명령의 전후에'echo $$'를 시도하십시오. 동일한 프로세스인지 여부를 알려줍니다. – FatalError

+0

@FatalError와 일치합니다. – DonCallisto

+0

echo $$는 종료 후에 다른 프로세스 ID를 출력합니다. .bashrc 파일은 있지만 .profile 파일은 없습니다. .bashrc에있는 exit라는 단어를 검색하여 명령이 무언가를하도록 구성되었는지 확인합니다. 그러나 .bashrc 파일에 종료 단어가 없습니다. – Romonov

답변

0

어쩌면 당신의 쉘은 쉘 변수를 설정하지만이 필수 아니며, 반드시 올바르지 않습니다 :

echo $SHELL 
/bin/bash 

당신은 당신의 프로세스 목록에서 --forest PS 도끼로 보면 :

ps ax --forest 

외부 쉘보다 위의 내부 쉘보다 위에있는 ps 명령을 직접 찾아야합니다.

+0

예.echo $ SHELL은 /bin/csh 이고 ps ax - forest는 위의 값을 나타냅니다. 10013 pts/9 Ss 0:00 \ _ -sh 및 10038 pts/9 S 0:00 | \ _/bin/bash 그리고 한 번 exit를 입력하고 echo $$를 입력하면 10013이됩니다. 이것은 exit를 먼저 입력하면 PID 10013의 쉘로 들어가는 것을 의미합니까? 그래서 색깔이있는 프롬프트와 무색 프롬프트 둘 다에 $ SHELL을 입력 할 때마다 출력되는/bin/csh와 관련이 있습니다. 감사! – Romonov

+0

불행히도 상황은 좀 더 복잡하며 관찰은 옳습니다. 많은 시스템에서 sh는 다른 쉘 (예 : bash 또는 대시)에 대한 심볼릭 링크입니다. 그렇다고해서 그것이 동일하게 행동하는 것은 아닙니다. 다른 설정 파일은 읽혀 지거나 읽히지 않으며 쉘은 리플렉션에 의해 어떻게 호출되었는지를 인식하고 구문 기능을 켜거나 끕니다. 하지만 나는 bash와 csh가 bash와 csh 일 것을 기대한다. –

+0

이것은 쉘 배포판에서 특히 중요하다고 생각합니다. 제가 레드햇 시스템에서 이러한 관찰을하고 있기 때문입니다. 우분투 시스템에서는 첫 번째 종료와 함께 종료됩니다. btw, redhat 시스템의 $ SHELL은/bin/csh를 제공하지만 Ubuntu의 쉘은/bin/bash를 제공합니다. 나는 레드햇 시스템에서 csh를 실행하고 있다고 생각한다. 혼란이 생기면 죄송합니다. 그리고 조명 토론에 감사드립니다. – Romonov