사용 중인 기본 "쉘"을 어떻게 표시합니까? UNIX에서는 이 명령이 올바른 ps -p$$입니까, 아니면 다른 방법이 있습니까?
답변1
$$
현재 과정입니다.
ps -p$$
따라서 현재 프로세스가 표시됩니다(이 경우에는 쉘).
당신은 또한 수 echo $SHELL
.
또는
getent passwd | grep ^`whoami`: | awk -F: '{print $NF}'
답변2
기본 쉘을 얻으려면 $SHELL
변수를 인쇄하면 됩니다.
$ echo $SHELL
/bin/bash
비록 이것이POSIX가 정의되지 않았습니다., 내가 테스트한 모든 쉘(ash, bash, dash, fish, csh, ksh, tcsh 및 zsh)에서 작동합니다.
해당 명령이 귀하의 환경에서 작동하지 않으면 언제든지 살펴볼 수 있습니다 /etc/passwd
. 예를 들어 Linux 시스템(UNIX도 있을 수 있지만 잘 모르겠습니다)에서는 다음 foo
과 같이 사용자 쉘이 제공됩니다.
grep '^foo:' /etc/passwd | cut -d: -f7
현재 실행 중인 쉘을 얻으려면 다음을 사용할 수 있습니다.
ps -p $$ | tail -n1 | awk '{print $NF}'
답변3
다른 답변에 추가하겠습니다. 특정 SHELL을 테스트하려면 다음을 사용할 수 있습니다.
- 큰 타격:
echo $BASH
- 크쉬:
echo $KSH_VERSION
이러한 변수는 실행 중인 해당 쉘에 의해 설정됩니다.