7

だから私は移植可能なbashrc/bash_profileファイルを作ろうとしています。私は.bashrc、.bash_profileなどにシンボリックにリンクしている単一のスクリプトを持っています。次に、$0どのスクリプトが呼び出されたかに基づいて、何をするかを見て切り替えています。問題は、シェルがbashrcスクリプトを呼び出すものです。もちろん、実際にbashを実行$0します。つまり、-bash. $1さらに多くはスクリプト名に設定されていません。

私の質問は、bash で実行中のスクリプトの名前を取得するにはどうすればよいかということです。それを実行するバイナリではありませんか?

それは本当に新しいプロセスではないので、設定されていないことを私に与えて-bashいると思います。$1何か案は?

4

3 に答える 3

30

試す:

readlink -f ${BASH_SOURCE[0]}

あるいは単に:

${BASH_SOURCE[0]}.

備考:

$0ユーザーが「./script.sh」を実行した場合にのみ機能します

$BASH_ARGVユーザーが「.script.sh」または「source script.sh」を実行した場合にのみ機能します

${BASH_SOURCE[0]}どちらの場合でも機能します。

readlink -fシンボリックリンクを利用する場合に便利です。

于 2013-02-12T14:52:25.883 に答える
2

変数BASH_ARGVは機能するはずです。スクリプトがソースされているようです

$BASH_ARGV
于 2013-02-12T14:53:42.280 に答える