如何查看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日

相关推荐

  • Linux命令ls -al显示信息的含义以及读写执行权限(rwx)的详解

    1.ls -al 以上图中的.bashrc文件为例: – rw-r–r– 1 ho ho 3771 1月 21 19:55 .bashrc 文件类型为文件 文件所属用户对文件的权限 如果是文件,表示硬链接数,一个文件至少有1个名字,所以硬链接数至少为1。如果是目录,表示子目录数,一个目录至少包含自身(.)和父目录(…

    操作系统经验 2021年7月10日
    01.8K0
  • 复数、实数、虚数的区别

    复数 复数就是实数和虚数的统称。复数的基本形式是a+bi,其中a,b是实数,a称为实部,bi称为虚部,i是虚数单位。 实数 实数分为有理数和无理数,是实实在在存在的数。 有理数是整数(正整数、0、负整数)和分数(无限循环小数)的统称。 无理数是不能用分数进行表示的小数,比如圆周率 π 。 虚数 虚数是与实数相对应的数,…

    操作系统经验 2021年8月6日
    07.1K0
  • GMT、UT、UTC时间的区别

    1.GMT 格林尼治标准时间:Greenwich Mean Time,简写GMT,以地球自转为基础的时间计量系统。 格林尼治(Greenwich)是英国伦敦的一个区,位于伦敦东南、泰晤士河南岸。1675-1948年设皇家格林尼治天文台,天文台地处地球本初子午线的标界处,世界计算时间和经度的起点。1884年,世界20多个…

    操作系统经验 2020年12月24日
    05.4K0

发表回复

登录后才能评论