如何判断我正在使用哪个unix shell?

问题描述:

有没有一个简单的方法,我可以告诉哪种类型的unix外壳我在,即我是否在bash/csh/ksh/tcsh如何判断我正在使用哪个unix shell?

尝试:

echo $0 

这通常在一系列弹作品。

+0

不适用于鱼 – rominf 2014-09-12 18:52:06

+0

@rominf:用'fish'只需输入'$',然后选择'tab'。你会看到一堆'$ __ fish'和'$ fish'变量定义 – 2015-03-15 13:15:05

+0

这也不适用于源文件。 – Steve 2017-12-28 23:04:13

mac:~$ ps 
    PID TTY   TIME CMD 
    223 ttys000 0:00.33 -bash 

obsd:~$ ps 
    PID TT STAT  TIME COMMAND 
20038 p0 Ss  0:00.01 -ksh (ksh) 
22251 p0 R+  0:00.00 ps 

或者只是echo $SHELL

+8

我认为'$ SHELL'是系统(或用户)的默认外壳,通常(但不一定)是在任何给定时刻实际使用的外壳。 – 2010-07-28 02:22:43

我知道的每个shell都将$变量($$)设置为它的pid。 Terminal - ShellName - 80x24

+0

鱼是例外。你需要使用%self – rominf 2014-09-12 18:51:25

如果您使用的是OS X的终端,则外壳在终端的标题栏,当你启动它指定名称相对于根。

+0

我认为这是正确的答案。 – 2015-11-29 01:51:48

echo $SHELL命令会给你你的shell:像这样 - 所以...

ps | grep $$ 
+0

SHELL不保证设置。例如,我的登录shell是bash,但是我在命令行运行了/ bin/sh,即使/ bin/sh ls破折号,SHELL仍然是/ bin/bash。 – 2014-05-12 03:12:36

+1

$ SHELL是登录shell。如果你的登录shell是bash,并且你启动了tcsh,那么$ SHELL将仍然是bash,即使你正在运行的shell是tcsh也是如此。 – 2014-07-18 13:23:37

+0

签出#ps -p $$ |尾-1 | awk'{print $ 4}' – 2014-10-15 05:27:59