sudoモードでコマンドを実行すると、「コマンドが見つかりません」が返されるのはなぜですか?

sudoモードでコマンドを実行すると、「コマンドが見つかりません」が返されるのはなぜですか?

コマンド例:

drush cc all

動作しますが、これは次のようになります。

sudo drush cc all

私にしてください:

sudo: drush: command not found

なぜ?この問題をどのように解決しますか?

ベストアンサー1

これにより、次のように事前設定されsudoたものが得られます。$PATHユーザーのデフォルトパスです。あなたのプログラムがとして識別されたディレクトリのリストにありません$PATH

例を見る

Sudo外部コマンドを実行するときは、できるだけ安全にしてください。

環境変数を処理する方法は2つあります。基本的に、env_reset Sudoers オプションが有効です。これにより、以下を含む最小環境でコマンドが実行されます。TERMPATHHOMESHELLLOGNAMEUSERそしてUSERNAMEenv_check呼び出しプロシージャーに追加および許可される変数env_keep Sudoersオプション。実際、環境変数のホワイトリストがあります。

sudo保存を構成できない場合の$PATH一般的な回避策は、プログラムの絶対パス名を指定することです。 (訪問していない)ディレクトリから別の実行可能ファイルを呼び出すスクリプトでは機能しない可能性があります。

おすすめ記事