sudo -Eはホームディレクトリにある特定のコマンドを実行できませんか?

sudo -Eはホームディレクトリにある特定のコマンドを実行できませんか?

兆候:

$ sudo -E adb
sudo: adb: command not found

$ which adb
/home/usr/opt/android/platform-tools/adb

$ sudo -E echo ${PATH}
...:/home/usr/opt/android/platform-tools

$ stat ~/opt/android/platform-tools/adb
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/ usr)   Gid: ( 1000/ usr)

@リチャード、ありがとう。私はこれをしました:

$ echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ echo 'echo $PATH' | sudo -E sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

したがって、sudoのパスにはありません。しかし、sudoが一時的にPATHを尊重するようにするにはどうすればよいですか?

ベストアンサー1

まったくそうではありません! (環境の PATH には/home/usr/opt/android/platform-toolsありません。) 実行する前にシェルで評価するので、in の値ではなく isstart より前の値を置き換えてください。sudo${PATH}sudoPATHsudosudo

あなたの疑いは正しいですPATH。ただし、評価の順序により、テストでは誤った回答が得られます。

あなたはする必要がありますsudo -E /home/usr/opt/android/platform-tools/adb

おすすめ記事