help exec
表示执行此选项
-a name pass NAME as the zeroth argument to COMMAND
该命令的Zeroth参数是什么?
-l place a dash in the zeroth argument to COMMAND
在第0个参数中放置破折号是什么意思?
答案 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,尽管它没有明确记录。