端末でどのシェルを使用しているかどうかを確認できますか? MacOSではどのシェルを使用しますか?
答え1
最も信頼できるものから最も信頼性の低いものまで(最も「重い」ものから)、いくつかの方法があります。
ps -p$$ -ocmd=
。 (Solarisではなければならずps -p$$ -ofname=
、macOSとBSDではなければなりませんps -p$$ -ocommand=
。)$BASH_VERSION
その他$ZSH_VERSION
のシェル関連変数を確認してください。- ビュー
$SHELL
;これはあなたを指定する最後の手段です。基本シェルが必ずしも必要ではない現在のシェル。
答え2
私のシステムにインストールされている4つのシェル(bash、dash、zsh、csh)で次のことができることがわかりました。
$ ps -p $$
以下はzsh、bash、dashには適用されますが、cshには適用されません。
$ echo $0
答え3
質問は、使用されているシェルについて尋ねられ、渡された潜在的な引数については議論しないので、これを表示しない方法があります。
$ ps -o comm= -p $$
ksh93
答え4
非常に簡単な2つの方法があります。
使用メモ注文する:
ps -o comm= $$
または
ps -h -o comm -p $$
どこ:
-h
または=
ヘッダーを表示したくない場合は、すべてのオプションを完了してください。-o comm
プロセスのデフォルト名のみが表示されます(bash
代わりに/bin/bash
)。-p <PID>
PIDのテーブルリストを提供するプロセスのみが一覧表示されます。
使用/プロセス擬似ファイルシステムのプロセス情報:
cat /proc/$$/comm
このオプションは上記のコマンドとまったく同じように機能します
ps
。または
readlink /proc/$$/exe
これは
/proc/PID/exe
実行中のファイルへのリンクであり、この場合は/bin/bash、/bin/kshなどを指します。シェルの名前だけを取得するには、次のものを使用できます。
basename $(readlink /proc/$$/exe)
これは、使用中のシェルインタプリタのバイナリへのリンクであり、スクリプト、ソースコード、または端末にあっても常に同じ結果を提供する唯一のオプションです。
警告するこれは最終バイナリを示すので、kshがksh93に接続されているか、shがbashに接続できることに注意してください。
現在のコマンドのPIDに接続して利用すると/proc
非常に便利です。/proc/self