나는 bash를 기본 쉘로 사용하여 터미널 에뮬레이터를 사용하고 있으며 환경 변수 SHELL의 값을 인쇄하여 현재 쉘을 인쇄했지만 다른 쉘, 즉 zshell을 입력하면 계속 첫 번째 값을 반환합니다. 기본 .
내가 현재 있는 쉘의 값을 인쇄하려면 어떻게 해야 합니까?
$ echo $SHELL
/bin/bash
$ zsh
unixnode%
$ unixnode% echo $SHELL
/bin/bash
답변1
로그인 쉘로 로그인하면 쉘 변수가 해당 쉘에 할당됩니다.
단순히 현재 로그인 쉘 세션 내에서 zsh를 실행하는 것과 같은 비로그인 쉘을 사용할 때마다 Shell 변수의 값은 동일하게 유지되지만 다른 쉘로 변경하려는 경우 로그아웃하고 다른 쉘에 다시 로그인해야 합니다.
답변2
내가 살고 있는 현재 쉘의 값을 인쇄하는 방법
쉘에 따라 다릅니다. POSIX 유형 쉘의 경우 다음을 사용하십시오.$0
$ bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
bash
$ /bin/bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
/bin/bash
$ zsh -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
zsh
$ ksh -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
ksh
$ dash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
dash
bash 매뉴얼에는이것은 $SHELL에 대해 말하는 것입니다.
껍질이 얼마나 다른지에 대한 더 흥미로운 점초기화$SHELL
$ unset SHELL; bash -c 'echo $SHELL'
/usr/local/bin/fish
$ unset SHELL; ksh -c 'echo $SHELL'
/bin/sh
$ unset SHELL; zsh -c 'echo $SHELL'
$ unset SHELL; dash -c 'echo $SHELL'
$ unset SHELL; fish -c 'echo $SHELL'
$ unset SHELL; tcsh -c 'echo $SHELL'
SHELL: Undefined variable.