スクリプトを実行するときにどのSHELLが使用されたかをどうやって知ることができますか? [コピー]

スクリプトを実行するときにどのSHELLが使用されたかをどうやって知ることができますか? [コピー]

スクリプトの実行に使用されるシェルをどのように出力しますか?

例: $SHELL 変数は、特定のユーザーにデフォルトのシェルを提供します。大丈夫です。ただし、特定のユーザーは別のシェルを使用してスクリプトを起動できます(例:「sh script.sh」または「csh script.sh」)。

Linuxマシンを使用してください。

ベストアンサー1

Linuxを指定したので、これは機能しますreadlink -f /proc/$$/exe。これは、標準出力でシェルスクリプト(たとえば/bin/bash)を実行するシェルへのパスを提供します。したがって、これを変数に割り当てることができます(少なくともPOSIXシェルでは)var=$(readlink -f /proc/$$/exe)

$$現在のシェルのpidです。/proc/«pid»/exe"魔法の"シンボリックリンクの形で特定のpidで実行されている実行可能ファイルを照会できるカーネル機能。したがってreadlink、を使用してパスを取得できます。

psLinux以外の場合はegを使用できますが、ps -o args= $$これは最終的にスクリプト名を提供する可能性があります(POSIXでは両方の動作を許可します)。

たとえば、スクリプトがユーザーのシェルに変数を設定するように設計されていない場合は、一番#!上の行を使用してスクリプトを実行するシェルを指定する必要があります。

おすすめ記事