터미널에서 어떤 쉘을 사용하고 있는지 어떻게 확인할 수 있나요? MacOS에서는 어떤 쉘을 사용합니까?
답변1
가장 신뢰할 수 있는 것부터 가장 덜 신뢰할 수 있는 것까지(가장 "무거운" 것부터) 여러 가지 방법이 있습니다.
ps -p$$ -ocmd=
. (Solaris에서는 이어야 하며ps -p$$ -ofname=
, macOS 및 BSD에서는 이어야 합니다ps -p$$ -ocommand=
.)$BASH_VERSION
및$ZSH_VERSION
기타 쉘 관련 변수를 확인합니다 .- 보기
$SHELL
; 이것은 귀하를 지정하는 최후의 수단입니다.기본쉘이 반드시 필요한 것은 아닙니다현재의껍데기.
답변2
내 시스템에 설치된 4개의 셸(bash, dash, zsh, csh)에서 다음을 수행할 수 있다는 것을 알았습니다.
$ ps -p $$
다음은 zsh, bash 및 dash에 적용되지만 csh에는 적용되지 않습니다.
$ echo $0
답변3
질문은 사용된 셸에 대해 묻고 전달된 잠재적 인수에 대해 논의하지 않으므로 이를 표시하지 않는 방법이 있습니다.
$ ps -o comm= -p $$
ksh93
답변4
매우 간단한 두 가지 방법이 있습니다.
사용메모주문하다:
ps -o comm= $$
또는
ps -h -o comm -p $$
어디:
-h
또는=
헤더를 표시하지 않으려면 모든 옵션을 완료하세요.-o comm
프로세스 기본 이름만 표시됩니다(bash
대신/bin/bash
).-p <PID>
PID의 테이블 목록을 제공하는 프로세스만 나열됩니다.
사용/프로세스의사 파일 시스템의 프로세스 정보:
cat /proc/$$/comm
이 옵션은 위의 명령과 정확히 동일하게 작동합니다
ps
.또는
readlink /proc/$$/exe
이는
/proc/PID/exe
실행 중인 파일에 대한 링크이며, 이 경우 /bin/bash, /bin/ksh 등을 가리킵니다.쉘의 이름만 얻으려면 다음을 사용할 수 있습니다.
basename $(readlink /proc/$$/exe)
이는 사용 중인 쉘 인터프리터의 바이너리에 대한 링크로서 스크립트, 소스 코드 또는 터미널에 있더라도 항상 동일한 결과를 제공하는 유일한 옵션입니다.
경고하다이것이 최종 바이너리를 표시하므로 ksh가 ksh93에 연결되거나 sh가 bash에 연결될 수 있다는 점에 유의해야 합니다.
현재 명령의 PID에 연결하여 활용하면 /proc
매우 유용합니다./proc/self