ソーススクリプトから現在のシェルの絶対パスを取得するには? [コピー]

ソーススクリプトから現在のシェルの絶対パスを取得するには? [コピー]

どんな

. some_script

または

source some_script

some_script絶対パスを決定する方法現在の.シェル(つまり、またはコマンドを実行するシェルsource)? (通常、このパスはの値とは異なります$SHELL。)

つまり、私が探している「絶対パス」対応物です$$。現在、シェルプロセスは実行可能ファイルのソースを知る必要があると思いましたが、AFAICT、環境変数に保存されていません。

私が考えることができる最善の方法は、ps -p $$生成された出力の適切な変形をキャッチすることです。たとえば、

CURRENT_SHELL=${"$( PS_FORMAT=cmd PS_PERSONALITY=linux ps -p $$ -h )"% *}

これは移植性が悪いかもしれません。 (そしてそれは醜いです。)


私は現在シェルが何であるかに主に興味がありますzsh。 (該当する回答に二次的な関心がありますbash。)

答え1

これが私が使用するものです:

head -n 1 /proc/$$/status | cut -f2

すべてのUnicesに移植可能かどうかはわかりませんが、LinuxとCygwinでは動作します。

関連情報