2

私の問題は、私がするときです:

$ which python => ディレクトリとして /a/b/c/python を取得します

しかし、 $ sudo which python => を実行すると、結果として /d/e/python が得られます

通常のケースと一致するようにsudoを変更するにはどうすればよいですか。ソースからライブラリをインストールできなくなります。

4

3 に答える 3

1

https://askubuntu.com/questions/477987/two-python-distributions-sudo-picking-the-wrong-oneによると、これは secure_path (/etc/sudoers で指定) が通常の PATH をオーバーライドした結果です。

実行したいバイナリへのパスへのパスを指定することで、これを回避しました。例えば:

$ which pip
/opt/local/bin/pip
$ sudo /opt/local/bin/pip install foo

理想的ではありませんが、動作し、secure_path を覆すことはありません。

于 2014-12-31T15:52:52.070 に答える
0

$PATH で最初に見つかったものを使用します

やってみる

echo $PATH

それから

sudo bash -c 'echo $PATH'

これらは違うに違いない。

いずれにせよ、通常、/root と現在のユーザーの両方で使用するシェル用の何らかの rc スクリプトがあり、必要なパスの環境変数のパスを再配置するだけです。

于 2012-03-07T01:08:59.020 に答える
0

私は最初にこれを試します:

sudo -i which python

これにより、(間接的に)rootユーザーのプロファイルが実行され、パスのデフォルト以外の構成が含まれます。(デフォルトでsudoは、気にしません。)

それが機能しない場合は、それがユーザーのプロファイル/usr/local/binによって設定されたパスにrootない (または前にない/usr/bin) ことを示しているため、オプションは、rootユーザーのプロファイルを変更して上記を使用するか、そうでなければ使用する:

sudo -E which python

パス (および残りの環境)を保持します。これは安全性が低い可能性があります。

これらの各オプションの詳細についてはsudoman-pageを参照してください。

于 2012-03-07T01:12:18.130 に答える