명령 앞에 쉘 변수가 없으면 Nohup

명령 앞에 쉘 변수가 없으면 Nohup

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할당 후에는 더 이상 셸이 필요하지 않기 때문에 여기서는 이를 명시적으로 사용합니다 . 나는 일부 쉘이 마지막 명령을 암시적으로(적어도 어떤 경우에는) 실행한다고 생각하지만 일부는 그렇지 않을 수도 있습니다.

관련 정보