nohup でエイリアスを使用する 質問する

nohup でエイリアスを使用する 質問する

以下はなぜ機能しないのでしょうか?

$ alias sayHello='/bin/echo "Hello world!"'
$ sayHello 
    Hello world!
$ nohup sayHello
    nohup: appending output to `nohup.out'
    nohup: cannot run command `sayHello': No such file or directory

(この質問をする理由は、自分の目的に合わせて最適化されたさまざまな perl/python バイナリにperlとをエイリアスしたからですpython。ただし、perl/python バイナリへのフルパスを指定しないと、nohup で問題が発生します)

ベストアンサー1

シェルはエイリアスを子プロセスに渡さないためです ($() または `` を使用する場合を除く)。

$ alias sayHello='/bin/echo "Hello world!"'

これで、このシェル プロセスでエイリアスが認識されます。これは問題ありませんが、この 1 つのシェル プロセスでのみ機能します。

$ sayHello 

Hello world!

同じシェルで「sayHello」と言ったので、うまくいきました。

$ nohup sayHello

ここで、プログラム「nohup」は子プロセスとして起動されます。したがって、エイリアスは受信されません。次に、見つからない子プロセス「sayHello」を起動します。

特定の問題の場合、新しい「perl」と「python」をできる限り通常のものに似せるのが最善です。検索パスを設定することをお勧めします。

~/.bash_profileあなたの追加で

export PATH="/my/shiny/interpreters/bin:${PATH}"

その後再度ログインしてください。

これは環境変数なので、意思シェルかどうかに関係なく、すべての子プロセスに渡されるようになりました。これで、非常に頻繁に動作するはずです。

おすすめ記事