今実行中のシェルを知るには
久しぶりの投稿となります。smorisakiです。
皆さんは、掲題の事を調べる時にどうされますか?
ログインシェルに関しては、/etc/passwdをみたり、以下ように環境変数を調べれば確認できます。
$ env | grep SHELL
ただ、途中でシェルを切り替えた場合は、上記の方法では分かりません。
例えば元々がbashを使用していて、ただのshに切り替えた時、
$ sh
当然環境変数は、切り替え前のままなので、確認しても、bashのままです。
$ env | grep SHELL
SHELL=/bin/bash
そこで以前の私は、以下のようにしてpsで自分のプロセスを表示させて確認していました。
$ ps -efH | grep 自分のUID
$ ps -efH | grep 512
512 7421 7420 0 22:07 pts/0 00:00:00 -bash
512 7547 7421 0 22:25 pts/0 00:00:00 sh ←ココ!
512 7548 7547 0 22:25 pts/0 00:00:00 ps -efH
512 7549 7547 0 22:25 pts/0 00:00:00 grep 512
しかしはっきり言って、全くスマートな方法では無いので、もっと良い方法が無いかなと思っていたのですが、ありました。
こんな感じです。
$ ps $$
コマンドの意味を説明しますと、ps コマンドにシェルの特殊変数$$を渡しています。
$$はご存じの通り、現在実行中のシェルのPIDが入っています。
そうすると現在実行中のシェルプロセスが表示されます。
$ ps $$
PID TTY STAT TIME COMMAND
7547 pts/0 S 0:00 sh










最近のコメント