默认情况下,bash在调用程序时将可执行文件名作为第一个(0更准确)参数传递
是否有任何特殊形式用于调用可用于传递0参数的程序?
根据从
调用它们的位置,它可以以不同的方式运行答案 0 :(得分:3)
我认为设置参数0的唯一方法是更改可执行文件的名称。例如:
$ echo 'echo $0' > foo.sh
$ ln foo.sh bar.sh
$ sh foo.sh
foo.sh
$ sh bar.sh
bar.sh
某些shell对exec
命令具有非POSIX扩展,允许您指定备用值:
$ exec -a specialshell bash
$ echo $0
specialshell
除了在子shell中运行之外,我不知道有类似的技术来更改像这样的子进程的名称
$ ( exec -a subshell-bash bash )
更新:三秒钟后,我在http://cr.yp.to/ucspi-tcp/argv0.html找到argv0
命令。