Daniel J. Barrett의 O'Reilly Linux 포켓 가이드에 따르면 이 명령은 echo $shell
현재 사용되는 쉘을 인쇄해야 합니다.
터미널에서 명령을 실행하면 빈 줄이 나타납니다. 제가 이해한 바에 따르면 터미널이 열려 있으면 쉘이 실행 중이어야 하는데 왜 공백이 인쇄되는지 혼란스럽습니다.
raven# echo $shell
raven#
답변1
csh
/ 쉘만 변수를 tcsh
설정합니다 . $shell
따라서 해당 쉘 중 하나에서 실행하는 경우에만 이 명령을 사용하여 쉘에 대한 경로를 얻을 수 있습니다. echo $shell
아마도 이러한 사항이 논의된 해당 책의 섹션에서 찾을 수 있습니다.
login
또는 기타 로그인 관리자 설정SHELL
환경passwd
변수를 로그인 셸(계정 데이터베이스에 언급된 셸)에 추가하면 이러한 셸은 항상 해당 $SHELL
변수에 매핑되며 이는 터미널 에뮬레이터 또는 시작을 위한 기본 셸로 설정하려는 환경 변수입니다. vi
로그인이 아닙니다. 껍데기.
하지만 꼭 껍질일 필요는 없어요현재 사용 중.
$SHELL
로그인한 이후 이 변수가 수정되지 않은 환경에서 터미널 에뮬레이터를 시작했고 터미널 에뮬레이터가 (또는 다른 명령)에 저장된 것과 다른 쉘(또는 다른 명령)을 시작하도록 구성되지 않은 경우 $SHELL
, 그런 다음 다른 쉘이 시작되지 않았거나 $SHELL
쉘 시작 순서에서 변수가 수정되지 않은 경우 이런 일이 발생합니다.$SHELL
쉘에 관계없이 어떤 쉘을 사용하고 있는지 알려주는 쉘 변수는 없습니다. 하지만 ksh93의 일부 구현에는 (t)csh 외에 ' 또는 / , '가 $shell
있어 어떤 쉘이 무엇인지 알 수 있습니다. 달리기.bash
$BASH
$BASH_VERSION
$BASH_VERSINFO
zsh
$ZSH_VERSION
$KSH_VERSION
ksh
${.sh.version}
$YASH_VERSION
yash
Linux에서는 이러한 쉘을 사용하여 인터프리터를 실행하는 프로세스의 pid로 확장된 readlink "/proc/$$/exe"
쉘 인터프리터에 대한 경로를 얻을 수도 있습니다(Bourne 유사, csh 유사, in , in -like 쉘 참조).$$
$fish_pid
fish
$pid
rc
더 편리하게 는 쉘을 실행해야 하는 sh -c 'ps -o comm= -p "$PPID"'
상위 프로세스의 이름이 제공됩니다.sh
현재 사용 중, 프로세스 이름은 쉘 인터프리터 실행 파일의 기본 이름에서 파생되어야 합니다. 모든 일반 쉘은 이 코드를 동일한 방식으로 해석해야 하며, 이 사이트 범위 내의 모든 시스템에는 sh
이 코드를 이해하는 명령이 있어야 합니다.ps
Bourne과 같은 쉘에서 변수의 내용과 개행 문자를 인쇄하려면 구문은 다음과 같습니다.
printf '%s\n' "$SHELL"
또는 csh
:
printf '%s\n' $SHELL:q
또는 rc
-like 또는 fish
또는 zsh
쉘에서:
printf '%s\n' $SHELL
아니요 (비록 어떤 쉘이 실행 중인지 모르는 경우 이는 아마도 충분한 근사치일 것이며 대부분의 경우 대부분의 쉘에서 작동할 것입니다).echo $SHELL
passwd
로그인 셸( 데이터베이스 에 저장됨)이 무엇인지 확인하려면 많은 시스템에서 다음을 수행할 수 있습니다(Bourne 구문).
getent -- passwd "$LOGNAME" | cut -d: -f7
또는 유틸리티가 없는 시스템에서는 getent
:
perl -le 'print((getpwnam getlogin)[8])'
¹ 그러나 와일드카드가 포함되지 않은 경우에만 해당 되며 임의의 데이터를 출력하기 $shell
위해 깨질 수도 있습니다.echo
답변2
쉘 변수 이름은 대소문자를 구분합니다. 이것합의는환경변수 이름은 모두 대문자입니다. 당신은 입력해야
echo $SHELL
대신에. @StephenKitt가 지적했듯이 이것은 책에 실제로 언급된 명령이기도 합니다.
일반적으로 echo
쉘 변수의 내용을 인쇄하는 데 사용되는 것은 다음과 같습니다.낙담하다printf
, @ Stéphane Chazelas의 답변에서 지적한 바와 같습니다.