現在のシェル名の確認

現在のシェル名の確認

重複の可能性:
端末で使用しているシェルをどのようにテストしますか?

現在のシェルパスまたはシェル名を確認するには?

shとの間を区別すればいいのですが、bash移植可能なソリューションが良いようです。

答え1

  1. 速くて汚い(おそらく間違っている可能性があります):

    $SHELLこれを知らせる環境変数はほとんど常にあります。一部の極端な場合、特に1つの対話型シェルを使用して別の対話型シェルを起動すると、この操作は失敗します。最近のシェルはまた、$BASH_VERSION自分の変数をまたは型に設定します$ZSH_VERSIONshこのような効果があるかどうかわかりませんでした。

  2. やや華やかさ:

    あるいは、ほとんどのインタラクティブシェルは、自分が何であるかを知り、同様のタスクを実行したときにpsを起動したプロセスのプロセスデータを取得します。echo $0これは、実行時に取得したのと同じ情報に依存しているようです。ps -fp $$

  3. さらに強力になりました:

    環境変数の設定などの便利な機能を持たない一部のシェルや環境では、動作する1つのアプローチは、procから目的のデータを抽出し、実行中の実行可能ファイルのパスが実際にreadlink -f /proc/$$/exe。どの実行ファイルが実行されたかに関する情報を提供します。他の項目へのシンボリックリンクであっても、変数は嘘をつくことがSHELLできます。

関連情報