현재 쉘 이름 확인

현재 쉘 이름 확인

중복 가능성:
터미널에서 사용 중인 셸을 어떻게 테스트하나요?

현재 쉘 경로나 쉘 이름을 확인하는 방법은 무엇입니까?

sh과 사이만 구별하면 되지만 bash이식 가능한 솔루션이 좋을 것 같습니다.

답변1

  1. 빠르고 더러운(아마도 틀렸을 수도 있음):

    $SHELL이를 알려주는 환경 변수가 거의 항상 있습니다 . 일부 극단적인 경우, 특히 하나의 대화형 셸을 사용하여 다른 대화형 셸을 시작할 때 이 작업이 실패합니다. 최근 쉘은 또한 $BASH_VERSION자신에 대한 변수를 또는 형식으로 설정합니다 $ZSH_VERSION. sh이런 효과가 있는지 몰랐어요

  2. 약간 화려함:

    또는 대부분의 대화형 셸은 자신이 무엇인지 알고 유사한 작업을 실행할 때 ps를 시작한 프로세스에 대한 프로세스 데이터를 검색합니다. echo $0이는 실행할 때 얻는 것과 동일한 정보에 의존하는 것으로 보입니다.ps -fp $$

  3. 더욱 강력해졌습니다:

    환경 변수 설정과 같은 편리한 기능이 없는 일부 셸 및 환경의 경우 작동할 수 있는 한 가지 접근 방식은 proc에서 원하는 데이터를 추출하고 실행 중인 실행 파일 경로가 실제로 readlink -f /proc/$$/exe. 어떤 실행 파일이 실행되었는지에 대한 정보를 제공합니다. 다른 항목에 대한 심볼릭 링크인 경우에도 변수가 SHELL거짓말을 할 수 있습니다.

관련 정보