重複の可能性:
端末で使用しているシェルをどのようにテストしますか?
現在のシェルパスまたはシェル名を確認するには?
sh
との間を区別すればいいのですが、bash
移植可能なソリューションが良いようです。
答え1
速くて汚い(おそらく間違っている可能性があります):
$SHELL
これを知らせる環境変数はほとんど常にあります。一部の極端な場合、特に1つの対話型シェルを使用して別の対話型シェルを起動すると、この操作は失敗します。最近のシェルはまた、$BASH_VERSION
自分の変数をまたは型に設定します$ZSH_VERSION
。sh
このような効果があるかどうかわかりませんでした。やや華やかさ:
あるいは、ほとんどのインタラクティブシェルは、自分が何であるかを知り、同様のタスクを実行したときにpsを起動したプロセスのプロセスデータを取得します。
echo $0
これは、実行時に取得したのと同じ情報に依存しているようです。ps -fp $$
さらに強力になりました:
環境変数の設定などの便利な機能を持たない一部のシェルや環境では、動作する1つのアプローチは、procから目的のデータを抽出し、実行中の実行可能ファイルのパスが実際に
readlink -f /proc/$$/exe
。どの実行ファイルが実行されたかに関する情報を提供します。他の項目へのシンボリックリンクであっても、変数は嘘をつくことがSHELL
できます。