如何查找我在 Linux 上使用的 shell
问题:我经常在命令行中切换不同的 shell。有没有一种快速、简单的方法来找出我当前所处的 shell?另外我怎样才能找到shell的版本?
找出您所在的外壳
有多种方法可以判断您当前所在的 shell。最简单的方法是使用特殊的 shell 参数。
其一,名为 $$
的特殊参数表示当前正在运行的 shell 实例的 PID。该参数是只读的,不能修改。因此,以下命令还将显示正在运行的 shell 的名称:
$ ps -p $$
PID TTY TIME CMD
21666 pts/4 00:00:00 bash
上述命令适用于所有可用的 shell。
如果您没有使用 csh
,另一种查找当前 shell 的方法是使用名为 $0
的特殊 shell 参数,它表示当前正在运行的 shell 或 shell 脚本的名称。这是 Bash 特殊参数之一,但也可在其他 shell 中使用,例如 sh
、zsh
、tcsh
或 dash
。使用 echo 命令打印出其值将告诉您当前所在的 shell 的名称。
$ echo $0
bash
不要与名为 $SHELL
的单独环境变量混淆,该变量设置为默认 shell 的完整路径。因此,该变量不一定指向您当前使用的 shell。例如,即使您在终端中调用不同的 shell,$SHELL
也保持不变。
$ echo $SHELL
/bin/shell

简而言之,为了找出当前的 shell,您应该使用 $$
或 $0
,但不能使用 $SHELL
。
找出您正在使用的 Shell 版本
一旦知道您所在的 shell,您可能想知道它是什么版本的 shell。为此,请在命令行中键入 shell 的名称,后跟 --version
。例如:
对于bash:
$ bash --version
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
对于 zsh:
$ zsh --version
zsh 5.0.7 (x86_64-pc-linux-gnu)
对于 tcsh:
$ tcsh --version
tcsh 6.18.01 (Astron) 2012-02-14 (x86_64-unknown-linux) options wide,nls,dl,al,kan,rh,nd,color,filec
对于某些 shell,您还可以使用特定于 shell 的变量(例如,$BASH_VERSION
或 $ZSH_VERSION
)。
$ echo $BASH_VERSION
4.3.8(1)-release