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

おすすめ記事