Unixで今使っているコマンドシェルを調べる方法

Unixマシンで使えるコマンドシェルには、bashやcsh、zshなど様々なものがありますが、いろいろな環境を触っていると自分が使っているマシンが果たしてどのコマンドシェルを使っているのかわからなくなる時があります。

$shellという変数を表示させて調べることもできますが


% echo $shell
/bin/csh

 

環境によっては値が設定されていない場合があります。

 

また、/etc/passwdを見てみるという手もあります。


cat /etc/passwd | grep myaccount 
myaccount:*:1156:1000:User &:/home/myaccount:/bin/csh

 

その他に、次のコマンドでも調べることができます。


ps -p $$

 

$$は現在のプロセス、つまりコマンドラインであれば、コマンドシェル自体のプロセスIDを示す特殊変数ですが、これをpsコマンドのpオプション 使って渡して、コマンドシェルの情報を表示させています。


% ps -p $$
 PID TT  STAT    TIME COMMAND
4363  0  Ss   0:00.01 -csh (csh)

$ ps -p $$
  PID TTY          TIME CMD
18263 pts/0    00:00:00 bash

 

こんな感じで表示されます。

 

たんにgrepで抽出してもいいですね。


% ps | grep $$
 4363  0  Ss   0:00.10 -csh (csh)

 

それより、実行中のシェルスクリプト名を返す$0を表示させるのが一番簡単かもしれません。


echo $0
-bash

 

お好きなやり方でどうぞ