exec选项:什么是命令的第零个参数?

时间:2011-05-10 00:27:41

标签: linux bash shell

help exec

表示执行此选项

-a name   pass NAME as the zeroth argument to COMMAND

该命令的Zeroth参数是什么?

-l                place a dash in the zeroth argument to COMMAND

在第0个参数中放置破折号是什么意思?

3 个答案:

答案 0 :(得分:1)

这是用于调用脚本的名称。

从命令行运行,可以通过链接调用脚本来更改它。

答案 1 :(得分:0)

在Mac OS X上比较:

(exec -a foo sh -c 'echo $0')
(exec -l -a foo sh -c 'echo $0')
(exec -l -a foo sh -c 'echo $0' arg0)

答案 2 :(得分:0)

正如您所知,第0个参数出现在argv[0]中,通常是正在执行的程序的名称。但是,“常规”意味着任何东西都可以出现在那里。

-l选项在命令名称前添加一个破折号(第零个参数)。这是login程序用来告诉shell它们是“登录shell”并且应该处理配置文件或等效的约定。

例如:

$ ps
  PID TTY           TIME CMD
37617 ttys000    0:00.01 -bash
$ bash
$ ps
  PID TTY           TIME CMD
37617 ttys000    0:00.02 -bash
37672 ttys000    0:00.01 bash
$ exit
exit
$ ps
  PID TTY           TIME CMD
37617 ttys000    0:00.02 -bash
$

破折号表示进程37617的shell是终端窗口的初始登录shell。这就是Unix shell如何检测到它们是登录shell至少返回到第7版(第7版)UNIX,尽管它没有明确记录。