デフォルトでは、bash はプログラムの呼び出し中に実行可能ファイル名を最初の (より正確には 0) 引数として渡します。
0 引数を渡すために使用できるプログラムを呼び出すための特別な形式はありますか?
呼び出された場所に応じて異なる方法で動作する一連のプログラムに役立ちます
デフォルトでは、bash はプログラムの呼び出し中に実行可能ファイル名を最初の (より正確には 0) 引数として渡します。
0 引数を渡すために使用できるプログラムを呼び出すための特別な形式はありますか?
呼び出された場所に応じて異なる方法で動作する一連のプログラムに役立ちます
引数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
でコマンドを見つけました。