我想要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 [-cl] [-a name] [command [arguments]]
由于 -a 选项,这使得姓名站立为argv[0]
with -a argv0 设置执行命令的argv[0]字符串
然而,两者都没有西施也不短跑也不鱼支持这一点。