linux脚本怎么查,如何找出在Linux/Unix上使用的Shell?

原标题:如何找出在Linux/Unix上使用的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 - %sn" "$SHELL"

我现在的shell - /bin/bash

af1683287e9abaf7de803768193152e3.png

请注意,这 $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)

2937466e90c2ebab2a98738139ccae25.png

因此,我建议使用以下语法来检查您正在使用哪个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

2bd70bfdc8879ccdccbff19b013ab332.png

您可以按以下方式将shell名称存储在变量中:

MYSHELL=`ps -hp $$|awk '{echo $5}'`

请注意,这些是反引号,而不是撇号。或者,如果您有bash shell,则最好尝试以下方法:

MYSHELL=$(ps -hp $$|awk '{echo $5}')

另一个选项如下:

echo $0

printf "%sn" $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

%

e051bc965fb18f1140d87e0de031c6c7.png

如何检查我的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

dc233c29ca72511725c9ec26b3948293.png

看起来/bin/bash shell是我的默认shell。想要更改您的默认shell?请阅读“在Linux或Unix中更改shell”页面以了解更多信息。让我们再次总结所有命令。

如何检查我正在使用哪个shell:

使用以下Linux或Unix命令:返回搜狐,查看更多

ps -p $$ - 可靠地显示您当前的shell名称。

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

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

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

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

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值