현재 실행중인 셸이 bash 또는 zsh인지 확실하게 확인할 수있는 방법은 무엇입니까?
(추가 셸을 명확하게 할 수 있다는 것은 보너스이지만 bash 및 zsh 만 100 % 필요합니다)
이 작업을 수행하는 몇 가지 방법을 보았지만 모두 문제가 있습니다 (아래 참조).
내가 생각할 수있는 최선의 방법은 하나만 작동하는 구문을 실행 한 다음 오류 / 출력을 확인하여 어떤 쉘이 실행 중인지 확인하는 것입니다. 이것이 최상의 솔루션이라면이 테스트에 가장 적합한 명령은 무엇입니까?
가장 간단한 해결책은 모든 셸에 셸을 식별 한 동일한 이름의 읽기 전용 매개 변수가 포함 된 경우입니다. 그러나 이것이 존재한다면 나는 그것을 들어 본 적이 없다.
현재 실행중인 셸을 결정하는 명확하지 않은 방법 :
# default shell, not current shell
basename "${SHELL}"
# current script rather than current shell
basename "${0}"
# BASH_VERSINFO could be defined in any shell, including zsh
if [ -z "${BASH_VERSINFO+x}" ]; then
echo 'zsh'
else
echo 'bash'
fi
# executable could have been renamed; ps isn't a builtin
shell_name="$(ps -o comm= -p $$)"
echo "${shell_name##*[[:cntrl:][:punct:][:space:]]}"
# scripts can be sourced / run by any shell regardless of shebang
# shebang parsing
@ruakh & @oguzismail의 의견으로 작업하면서 해결책이 있다고 생각합니다.
\shopt -u lastpipe 2> /dev/null
shell_name='bash'; : | shell_name='zsh'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다