중복 가능성:
터미널에서 사용 중인 셸을 어떻게 테스트하나요?
현재 쉘 경로나 쉘 이름을 확인하는 방법은 무엇입니까?
sh
과 사이만 구별하면 되지만 bash
이식 가능한 솔루션이 좋을 것 같습니다.
답변1
빠르고 더러운(아마도 틀렸을 수도 있음):
$SHELL
이를 알려주는 환경 변수가 거의 항상 있습니다 . 일부 극단적인 경우, 특히 하나의 대화형 셸을 사용하여 다른 대화형 셸을 시작할 때 이 작업이 실패합니다. 최근 쉘은 또한$BASH_VERSION
자신에 대한 변수를 또는 형식으로 설정합니다$ZSH_VERSION
.sh
이런 효과가 있는지 몰랐어요약간 화려함:
또는 대부분의 대화형 셸은 자신이 무엇인지 알고 유사한 작업을 실행할 때 ps를 시작한 프로세스에 대한 프로세스 데이터를 검색합니다.
echo $0
이는 실행할 때 얻는 것과 동일한 정보에 의존하는 것으로 보입니다.ps -fp $$
더욱 강력해졌습니다:
환경 변수 설정과 같은 편리한 기능이 없는 일부 셸 및 환경의 경우 작동할 수 있는 한 가지 접근 방식은 proc에서 원하는 데이터를 추출하고 실행 중인 실행 파일 경로가 실제로
readlink -f /proc/$$/exe
. 어떤 실행 파일이 실행되었는지에 대한 정보를 제공합니다. 다른 항목에 대한 심볼릭 링크인 경우에도 변수가SHELL
거짓말을 할 수 있습니다.