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