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 $$
귀하의 질문에 대한 답변이 모두 해결된 것 같습니다. 아직도 궁금한 점이 있으면 다음을 참조하세요.이 기사의 출처.