unix的命令行中怎么知道现在执行的shell是哪个?

如比如比 发布于 2015/05/27 17:50
阅读 757
收藏 0
在unix的命令行中,怎么知道现在执行的shell是ksh,tcsh,bash等等中的哪一个呢?
加载中
1
Feng_Yu
Feng_Yu

echo $0

EDIT: google了一下,发现ps也可以

http://www.cyberciti.biz/tips/how-do-i-find-out-what-shell-im-using.html

如比如比
如比如比
确认过,除csh以外基本上能得到结果,google知道的太多了,呵呵。
2
终曲
终曲
echo $SHELL



0
如比如比
如比如比

引用来自“终曲”的评论

echo $SHELL



确认过,在shell变更后,显示的结果不是当前的。
如比如比
如比如比
回复 @终曲 : 这里有一个点是现在执行的,就是我正在用着的。chsh改变的是登录时的默认shell,改变后,像你所说的那样,在“下次登录”时有效。但我只想知道现在用的是什么。
终曲
终曲
如果是chsh改变的shell,那么echo $0一样不会显示新结果,只有新开session/tty才生效,我测试过了,ps $$和echo $0本质一样
0
eechen
eechen
大多数GNU/Linux的命令行(shell)用的都是GNU Bash这个程序,执行 echo $SHELL 或 echo $0 可见。
OSX用的也是GNU Bash。FreeBSD默认应该是tcsh,也可以自己安装Bash。
Solaris、AIX这些Unix要用Bash,肯定也是可以的。
shell脚本开头一般都是#!/bin/sh,在Ubuntu上/bin/sh指向/bin/dash,
dash是一个轻量级的shell,bash支持的东西,dash不一定支持。

Dash与Bash的语法区别:
http://www.igigo.net/post/archives/169
如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。
返回顶部
顶部