查看当前终端运行的是哪种shell

$ echo $SHELL 

很具有欺骗性,我在zsh下运行也得到/bin/bash

正确的方式是

$ ps -p $$  

会显示当前shell的进程信息,简单点: ps $$ 也可以,用-p参数更严谨一些。
(或 ps -fp $$ 看的信息更多一些)

$$表示当前进程id,显示当前终端的进程id如下:

$ echo $$ 

//2012.8.17补充
发现mac下的/usr/bin/cd是一段脚本

% cat /usr/bin/cd
    #!/bin/sh
    builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"}

从这个脚本里发现使用 echo $0 就可以了
$0 是当前进程的名字,zsh下显示的是全路经 /usr/bin/zsh 而bash下显示的是 -bash,脚本里调用则显示的是脚本的名字
http://www.linuxquestions.org/questions/programming-9/what-exactly-does-echo-$0-return-782908/

查看当前终端运行的是哪种shell》上有1条评论

  1. hongjiang 文章作者

    不能用 $0 判断,执行函数时,这个$0 是函数名

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注