POSIX Shell:更改了 arg0 的 `exec`

POSIX Shell:更改了 arg0 的 `exec`

我想要exec一个程序并控制它的参数,包括 arg0 和环境。使用 CI 可以实现execve.我可以在 POSIX shell 中执行此操作吗?

答案1

根据 POSIX 文档特殊的内置实用程序,exec 的语法是

exec [command [argument...]]

调用 shell 的环境应该被传播到命令所以在执行之前设置它应该foo=bar exec cmd就可以了。但是,您可能需要考虑基本原理段落。

大多数历史实现都不一致: foo=bar exec cmd 没有将 foo 传递给 cmd。

也没有内置的方法来修改 argv[0]。
可能的解决方法包括符号链接一些名称命令之前exec some_name(完全归功于穆鲁

注意巴什 桀骜克什支持 exec 命令的扩展实现:

exec [-cl] [-a name] [command [arguments]]

由于 -a 选项,这使得姓名站立为argv[0]

with -a argv0 设置执行命令的argv[0]字符串

然而,两者都没有西施也不短跑也不支持这一点。

相关内容