GNU/Linux >> Linux の 問題 >  >> Linux

`sudo`に$pathを保持させる方法は?

/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の実行でも機能します あなたの $PATHsecure_pathとは対照的に )その環境では、ただしsudoには影響しません の実行可能ファイルの検索パスなので、sudoは役に立ちません そのgodi_consoleを見つける際に 。


Linux
  1. LinuxにVagrantをインストールする方法

  2. ApacheでvHostを設定する方法

  3. パスをパスに正しく追加する方法は?

  1. $ pathにきれいに追加する方法は?

  2. `alias Sudo !!`の方法は?

  3. ファイルをスパースにする方法は?

  1. スクリプトをルートとして遡及的に実行する方法は?

  2. LinuxでRをアップグレードするには?

  3. Linux で $PATH を編集するにはどうすればよいですか?