어떤 셸에서 실행되고 있나요?

어떤 셸에서 실행되고 있나요?

실행하면 echo $SHELL출력에 쉘이 /bin/tcsh실행 중이라는 의미가 표시됩니다 tcsh. 하지만 예를 들어 다음 명령을 실행할 때

alias emacs 'emacs -nw' 

다음 오류가 발생합니다.

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

내가 발행하면 alias emacs="emacs -nw"정상적으로 실행됩니다!

실행 중이지만 tcsh명령이 bash.

이유가 무엇일까요?

답변1

$SHELL반드시 현재 쉘일 필요는 없습니다.기본 로그인 쉘. 사용중인 쉘을 확인하려면 다음을 시도하십시오.

ps $$

ps이는 BSD 구문을 지원하는 최신 Unix/Linux에서 작동합니다 . 그렇지 않으면 이식 가능한(POSIX) 방식입니다.

ps -p $$

실행 중인 경우 다음과 같은 결과가 반환되어야 합니다 tcsh.

8773 pts/10   00:00:00 tcsh

tcsh기본 쉘로 사용하려면 chsh이를 설정하는 데 사용하십시오.

답변2

명령줄에서 $0변수를 사용하여 사용 중인 셸을 확인할 수도 있습니다. 예:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

참고: $0이 스크립트 자체가 되기 때문에 스크립트 내에서 $0을 사용하여 쉘을 결정할 수 없습니다.

답변3

이것은 위의 모든 더 나은 답변에 대한 수정 사항입니다. 어느 시점에서 대시를 식별하는 데 작은 문제가 있었습니다. 공유하는 것이 옳은 것 같았습니다.

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

어려운 부분의 문제 해결에 좋습니다. 건배.

답변4

Unix/Linux 운영 체제에는 둘 이상의 쉘이 설치되어 있을 수 있습니다. 터미널에 다음 명령을 입력하여 사용 중인 쉘을 확인할 수 있습니다.

아래는 목록입니다,

  • 본 쉘 – sh
  • C 쉘 – csh
  • T 쉘 – tcsh
  • 콘 쉘 – ksh
  • 다시 한번 쉘 – bash
  • 대시 쉘
  • Z 쉘

이 목록은 완전하지 않으며 다른 쉘도 많이 있습니다.

/etc/shells 파일은 시스템에 설치된 모든 쉘 목록을 저장합니다. 간단히 아래 명령을 실행하여 설치된 쉘을 찾으십시오.

$ cat /etc/shells

Unix 또는 Linux 운영 체제에 로그인할 때 기본 쉘을 확인하려면 /etc/passwd 파일에서 grep 명령을 실행하십시오.

$ grep john /etc/passwd    

동일한 목적으로 $SHELL 변수를 사용할 수도 있습니다.

echo $0
$ echo $SHELL

다음을 사용하면 결과는 아래와 유사해 보입니다.세게 때리다(본 어게인 쉘) 터미널: 시스템에 여러 개의 쉘이 설치되어 있는 경우 언제든지 쉘을 전환할 수 있습니다.

그렇다면 현재 어떤 쉘이 실행되고 있는지 어떻게 알 수 있나요?

간단히 아래 명령을 사용하십시오

-bash
$ ps -p $$

귀하의 모든 질문에 대한 답변이 있다고 생각합니다. 그래도 궁금하신 분들은 참고해보세요이 소스 기사.

관련 정보