找出Linux上使用的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 - %s\n' '$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 '%s\n' $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命令:
  1. ps -p $$ -可靠地显示您当前的shell名称。

  2. echo '$SHELL' -显示当前用户的shell,但不一定是正在运行的shell。

  3. echo $0 -在Linux或类似Unix的系统上获取当前shell解释器名称的另一种可靠且简单的方法。

  4. cat /etc/shells -列出当前安装的有效登录Shell的路径名

  5. grep '^$USER' /etc/passwd -打印默认的shell名称。当您打开终端窗口时,默认shell程序将运行。

  6. chsh -s /bin/ksh -将您的帐户使用的shell程序从/ bin / bash(默认)更改为/bin/ksh

...END...

(0)

相关推荐