sudoを使用してコマンドを実行したり、スーパーユーザーとして直接実行したりする動作は異なります - 同じPATH

sudoを使用してコマンドを実行したり、スーパーユーザーとして直接実行したりする動作は異なります - 同じPATH

xubuntuにEclipseをインストールしようとしましたが、javaをインストールして「JAVA_HOME」sudo gdebi <java-package>.debに追加し、環境を再ロードしてシステム全体を再起動しました。/etc/environmentPATH

実行中にjava --version正しい出力が表示されます。

java 12.0.1 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

スーパーユーザーが呼び出すと、両方

$ sudo su
# java --version

または経由

$ java --version

しかし走っている

$ sudo java --version

私は持っていますjava: command not found

しかし走っている

sudo echo $PATH 

私は持っています

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk-12.0.1/bin/:/snap/bin/

そしてJavaパスが存在します。/usr/lib/jvm/jdk-12.0.1/bin/

どうすれば解決できますか?また、誰かがこのようなことが起こる理由を説明できますか?

ベストアンサー1

sudoがPATHを上書きしたようです。

/etc/sudoers設定が含まれていることを確認し、secure_path=...この設定にJavaパスを追加する必要があります。


簡単なテストに注意してください。パスを確認するには、次の手順を実行する必要があります。

sudo bash -c 'echo $PATH'

より単純な形式は呼び出し前に拡張されるsudo echo $PATHため機能しません。PATHsudo

おすすめ記事