来自: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/bashlinuxmi@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列)。linuxmi@linuxmi:~/www.linuxmi.com$ ps -p $$PID TTY TIME CMD
10603 pts/2 00:00:00 bashMYSHELL=`ps -hp $$|awk '{echo $5}'`请注意,这些是反引号,而不是撇号。或者,如果您有bash shell,则最好尝试以下方法:MYSHELL=$(ps -hp $$|awk '{echo $5}')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:
ps -p $$ -可靠地显示您当前的shell名称。
echo '$SHELL' -显示当前用户的shell,但不一定是正在运行的shell。
echo $0 -在Linux或类似Unix的系统上获取当前shell解释器名称的另一种可靠且简单的方法。
cat /etc/shells -列出当前安装的有效登录Shell的路径名
grep '^$USER' /etc/passwd -打印默认的shell名称。当您打开终端窗口时,默认shell程序将运行。
chsh -s /bin/ksh -将您的帐户使用的shell程序从/ bin / bash(默认)更改为/bin/ksh
...END...