/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
を見つける際に 。