1

デフォルトでは、bash はプログラムの呼び出し中に実行可能ファイル名を最初の (より正確には 0) 引数として渡します。

0 引数を渡すために使用できるプログラムを呼び出すための特別な形式はありますか?

呼び出された場所に応じて異なる方法で動作する一連のプログラムに役立ちます

4

1 に答える 1

3

引数0を設定する唯一の方法は、実行可能ファイルの名前を変更することだと思います。例えば:

$ echo 'echo $0' > foo.sh
$ ln foo.sh bar.sh
$ sh foo.sh
foo.sh
$ sh bar.sh
bar.sh

一部のシェルには、コマンドの非POSIX拡張機能がexecあり、代替値を指定できます。

$ exec -a specialshell bash
$ echo $0
specialshell

サブシェルで実行する以外に、このような子プロセスの名前を変更するための同様の手法を私は知りません。

$ ( exec -a subshell-bash bash )

更新:3秒後、http://cr.yp.to/ucspi-tcp/argv0.htmlargv0でコマンドを見つけました。

于 2013-03-19T16:54:20.513 に答える