似乎nohup
无法运行前面带有环境变量的命令。例如,
nohup LD_PRELOAD=~/file.so ./run &
说
nohup: failed to run command 'LD_PRELOAD=/home/mahmood/file.so': No such file or directory
实际上,file.so
存在但不是命令。我该如何解决?
像这样设置一个变量
foo=bar whatever
是Shell语法的一部分。分配必须在命令之前。
在您的情况下,外壳程序不识别LD_PRELOAD=~/file.so
为分配。这只是一个参数nohup
,nohup
不支持这样的设置变量。
如果您在shell中(并且很可能是因为~/
并且&
还需要shell),则可以将变量放在的环境中nohup
,它将被继承:
foo=bar nohup whatever &
但这显然可能会影响nohup
自己。如果您不在shell中和/或不希望变量在的环境中nohup
,请告诉nohup
运行一个解释语法的shell:
nohup sh -c 'foo=bar exec whatever'
在这里我明确使用了,exec
因为在分配之后,我们不再需要外壳了。我相信有些shell会隐式执行最后一条命令(至少在某些情况下),有些则不会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句