原标题:如何找出在Linux/Unix上使用的Shell?
来自:Linux迷 https://www.linuxmi.com/
Linux和Unix都提供了开箱即用的各种shell。你可以找到bash (Bourne shell), ksh (Korn shell), csh (C shell)/tcsh (TC shell), sh (Bourne shell)和更多默认安装。然而,你如何检查自己使用的shell 呢?找出我在Linux上使用的shell的最好方法是什么?echo $SHEL不是那么可靠。本文解释了如何找出自己在Linux、MacOS、FreeBSD或类Unix系统中使用的shell。
下面的echo命令或printf命令应该可以使用:
linuxmi@linuxmi:~/www.linuxmi.com$ echo "$SHELL"
/bin/bash
或者
linuxmi@linuxmi:~/www.linuxmi.com$ printf "我现在的shell - %sn" "$SHELL"
我现在的shell - /bin/bash
请注意,这 $SHELL是当前用户的shell程序,但不一定是当前正在运行的shell程序。试试下面的例子
linuxmi@linuxmi:~/www.linuxmi.com$ echo "我现在的shell是 $SHELL ($0)"
我现在的shell是 /bin/bash (bash)
linuxmi@linuxmi:~/www.linuxmi.com$ ksh
$ echo "我现在的shell是 $SHELL ($0)"
我现在的shell是 /bin/bash (ksh)
因此,我建议使用以下语法来检查您正在使用哪个shell。
如何检查我正在使用哪个shell?
这是另一个古老的Unix技巧。使用带 -p {pid}选项的ps命令。以下命令选择其进程ID号显示在pid中的进程。使用以下命令找出您所在的shell:
示例输出:
那么传递给-p选项的$参数是什么?记住$返回当前进程的PID(进程标识号),而当前进程就是您的shell。因此,在该编号上运行ps会显示您的Shell的进程状态列表。在该清单中,您将找到shell的名称(查找CMD列)。
在我的Linux机器上:
linuxmi@linuxmi:~/www.linuxmi.com$ ps -p $$
样例输出:
PID TTY TIME CMD
10603 pts/2 00:00:00 bash
您可以按以下方式将shell名称存储在变量中:
MYSHELL=`ps -hp $$|awk '{echo $5}'`
请注意,这些是反引号,而不是撇号。或者,如果您有bash shell,则最好尝试以下方法:
MYSHELL=$(ps -hp $$|awk '{echo $5}')
另一个选项如下:
echo $0
或
printf "%sn" $0
以上命令的输出示例:
linuxmi@linuxmi:~/www.linuxmi.com$ ksh
$ echo $0
ksh
$ ps -p $$
PID TTY TIME CMD
12350 pts/6 00:00:00 ksh
$ csh
% ps -p $$
PID TTY TIME CMD
12357 pts/6 00:00:00 csh
%
如何检查我的Linux机器上安装了多少个shell ?
该/etc/shells是一个文本文件,其中包含有效登录shell的完整路径。输入以下[nixmd name=”cat”]以查看列出您的Linux或Unix机器上安装了多少个Shell:
linuxmi@linuxmi:~/www.linuxmi.com$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/ksh2020
/usr/bin/rksh2020
/bin/csh
/usr/bin/csh
当我打开终端应用时,默认情况下打开哪个shell?
您的默认外壳程序在/ etc / passwd文件中定义。因此,请尝试以下grep命令:
linuxmi@linuxmi:~/www.linuxmi.com$ grep "^$USER" /etc/passwd
看起来/bin/bash shell是我的默认shell。想要更改您的默认shell?请阅读“在Linux或Unix中更改shell”页面以了解更多信息。让我们再次总结所有命令。
如何检查我正在使用哪个shell:
使用以下Linux或Unix命令:返回搜狐,查看更多
ps -p $$ - 可靠地显示您当前的shell名称。
echo "$SHELL" - 显示当前用户的shell,但不一定是正在运行的shell。
cat /etc/shells - 列出当前安装的有效登录Shell的路径名
grep "^$USER" /etc/passwd - 打印默认的shell名称。当您打开终端窗口时,默认shell程序将运行。
chsh -s /bin/ksh - 将您的帐户使用的shell程序从/ bin / bash(默认)更改为/bin/ksh
责任编辑: