スクリプトでsudoを使用してコマンドを見つけることができません。

スクリプトでsudoを使用してコマンドを見つけることができません。

Bashスクリプトでsudoコマンドを実行しようとしています。

#!/bin/bash

sudo node app.js

これは私に衝撃を与えた:

sudo: node: command not found

sudoなしでnode app.jsだけを実行しようとすると、正常に実行されます。

実行しようとすると、sudo -hsudo helpが印刷されます。

ただし、試してみるとsudo node app.jsエラーが発生します。

答え1

node非標準パスにあるか、少なくともルートパスにないようです。この問題を解決する方法はいくつかあります。

  1. フルパスの使用node

    • フルパス検索の使用which node

    • /home/user/bin/nodeそこにいると言ったら電話してください。sudo /home/user/bin/node app.js

    • あるいは、@UlrichSchwarzが提案したように、コマンド置換を使用して2つを組み合わせることもできます。sudo $(which node) app.js

    • sudoその場所にいるユーザーの読み取り/実行権限が必要であることを覚えておいてください。sudo以下を行うとき、これは大きな問題ではありません。root


  1. 環境変数を保存するオプションsudoとして呼び出す-E

    • sudo -E node app.js

    • $PATHこれにより、以前の状態が維持されます。sudo

    • sudo詳しくはマンページをご覧ください。http://linux.die.net/man/8/sudo

関連情報