/optの下のカスタムディレクトリにインストールされているプログラムがあります。実行しやすくするために、bashrcを編集して、上記のディレクトリをパスに追加しました:
export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin
sudoを使用せずにプログラムを実行する場合、これは正常に機能します。ただし、sudoを使用して実行しようとすると、「コマンドが見つかりません」というエラーで失敗します。
$ sudo godi_console
sudo: godi_console: command not found
sudoを使用した後にPATH変数を調べると、通常のユーザーと同じPATHが含まれていないことがわかります。
$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PATHが同じでないのはなぜですか?私は何か間違ったことをしていますか?違いがあれば、私はDebianJessieを使用しています。
私が試した1つのことは、/ opt / godi / sbin / godi_consoleを直接呼び出して、実行可能ファイルに絶対パスを渡すことでした。残念ながら、この特定のケースでは、godi_console自体が正しく設定されているPATHに依存しているため、これは役に立ちませんでした。
承認された回答:
いつでもできます:
sudo env "PATH=$PATH" godi_console
Debianのセキュリティ対策として、/etc/sudoers secure_pathがあります オプションを安全な値に設定します。
注:
sudo "PATH=$PATH" godi_console
sudoの場所 =を含む先頭の引数を扱います 環境変数の割り当てとしての文字自体は、godi_consoleの実行でも機能します あなたの $PATH (secure_pathとは対照的に )その環境では、ただしsudoには影響しません の実行可能ファイルの検索パスなので、sudoは役に立ちません そのgodi_consoleを見つける際に 。