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
는 있지만 명령은 아닙니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
이렇게 변수를 설정하세요
foo=bar whatever
쉘 구문의 일부입니다. 할당은 명령보다 선행되어야 합니다.
귀하의 경우 쉘은 이를 LD_PRELOAD=~/file.so
할당으로 인식하지 않습니다. 이는 단지 매개변수일 뿐이며 nohup
이와 nohup
같은 변수 설정을 지원하지 않습니다.
셸에 있는 경우(그리고 셸도 필요할 가능성이 높으며 ~/
필요함 &
) 환경에 변수를 넣을 수 nohup
있으며 상속됩니다.
foo=bar nohup whatever &
그러나 이것은 분명히 nohup
당신에게 영향을 미칠 수 있습니다. 쉘에 있지 않거나 변수가 환경에 있는 것을 원하지 않는 경우 구문을 해석하는 쉘을 실행하라고 nohup
지시하십시오 .nohup
nohup sh -c 'foo=bar exec whatever'
exec
할당 후에는 더 이상 셸이 필요하지 않기 때문에 여기서는 이를 명시적으로 사용합니다 . 나는 일부 쉘이 마지막 명령을 암시적으로(적어도 어떤 경우에는) 실행한다고 생각하지만 일부는 그렇지 않을 수도 있습니다.