zsh와 bash 사이를 이동하려고합니다.
기본적으로 쉘은 zsh입니다. 다음을 입력하여 이를 알 수 있습니다.
echo $SHELL
그리고 나는 얻는다/bin/zsh
하지만 Bash를 열고 싶기 때문에 /bin/bash
; 나는 지금 bash에 있다고 가정하지만 에코하면 $SHELL
여전히/bin/zsh
무슨 일이에요?
답변1
SHELL은 zsh를 호출할 때 bash에서 zsh로 전달되는 환경 변수입니다. SHELL은 다음 중 하나가 아닙니다.쉘에 의해 설정된 매개변수zsh에서는 그 값이 그대로 유지됩니다.
bash$ SHELL=turtle zsh
zsh$ echo $SHELL
turtle
zsh 셸에 있다는 표시를 보려면 다음을 시도해 보세요.
echo $ZSH_NAME
echo $0
변수 는 전통적으로 "비밀번호 데이터베이스에 지정된 대로" 프로그램 SHELL
에 의해 설정됩니다 . login
(에서 복사됨$SHELL 환경 변수를 설정하는 것은 무엇입니까?)
답변2
많은 쉘은 시작할 때 버전 변수를 설정합니다.
bash
BASH_VERSION을 사용하고 zsh
ZSH_VERSION을 사용하십시오.
두 변수를 알려진 값으로 설정하면 어떤 쉘이 시작되었는지 확실하게 감지합니다.
BASH_VERSION=notbash ZSH_VERSION=notzsh sh -c 'echo "$BASH_VERSION $ZSH_VERSION"'
notbash 5.3.1
sh가 zsh이거나 5.0.2(2)-release notzsh
sh가 bash이면 인쇄됩니다 .
안타깝게도 KSH_VERSION을 문자열 값과 함께 사용하면 ksh segfault가 발생합니다.