如何查看Linux系统当前用户支持哪些shell和默认shell以及正在使用的shell?

1.当前用户支持哪些shell?

以下示例均以Ubuntu 22.04为例。

当前Linux系统支持的shell都记录在/etc/shells文件中。

cat /etc/shells
//输出如下
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash

从输出可见,当前Linux系统支持的shell有:sh、dash、rbash、bash,但sh符号链接到了dash,rbash符号链接到了bash,所以实际上只支持dash和bash。

2.当前用户默认shell

那如何查看Linux系统当前用户的默认shell呢?

//使用echo输出环境变量SHELL的值
echo $SHELL

//使用env查看环境变量SHELL的值
env
//都输出
/bin/bash

从输出可见,Ubuntu 22.04默认的shell为bash。

3.当前用户正在使用的shell

3.1ps -p $$

echo $SHELL显示的是当前用户的默认shell,并不是显示的是当前用户正在使用的shell,如果切换了shell,echo $SHELL显示的还是当前用户的默认shell,如下所示:

ho@ho-Inspiron-N3010:~$ echo $SHELL
/bin/bash
ho@ho-Inspiron-N3010:~$ dash
$ echo $SHELL
/bin/bash

可使用如下命令查看当前用户正在使用的shell:

//$$表示运行以下命令的shell的PID
ps -p $$
ho@ho-Inspiron-N3010:~$ echo $SHELL
/bin/bash
ho@ho-Inspiron-N3010:~$ dash
$ echo $SHELL
/bin/bash
$ ps -p $$
    PID TTY          TIME CMD
  10769 pts/0    00:00:00 dash

3.2echo $0

$0是在shell初始化时就设置好的参数,为shell或shell脚本的名称。

echo $0
ho@ho-Inspiron-N3010:~$ echo $SHELL
/bin/bash
ho@ho-Inspiron-N3010:~$ echo $0
bash
ho@ho-Inspiron-N3010:~$ dash
$ echo $SHELL
/bin/bash
$ echo $0
dash

3.3readlink /proc/$$/exe

输出符号链接文件的实际文件

readlink /proc/$$/exe
//输出如下
ho@ho-Inspiron-N3010:~$ readlink /proc/$$/exe
/usr/bin/bash

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/osexp/1335.html

(2)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年6月5日
下一篇 2020年8月1日

相关推荐

发表回复

登录后才能评论