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
割り当て後はシェルが不要になるため、ここでは明示的に使用します。私はいくつかのシェルが最後のコマンドを暗黙的に(少なくとも場合によっては)実行すると思いますが、一部はそうではないかもしれません。