将0参数(默认情况下为可执行文件名)传递给调用程序

时间:2013-03-19 16:43:35

标签: bash

默认情况下,bash在调用程序时将可执行文件名作为第一个(0更准确)参数传递

是否有任何特殊形式用于调用可用于传递0参数的程序?

根据从

调用它们的位置,它可以以不同的方式运行

1 个答案:

答案 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命令。