sudo:java:コマンドが見つかりません

新しくインストールされたUbuntu、jdkがインストールされ、環境変数も/ etc / profileファイルで構成されますが、実行すると奇妙なことが起こります。

java -version

問題がないが、実行する場合:

sudo java -version

の場合、エラーが報告されました:
sudo:java:コマンドが見つかりません

インターネットで解決策を検索する:

1.次のコマンドを実行します。

 sudo visudo 

/ etc / sudoersファイルを開きます。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

注:/ etc / sudoersをviで直接開き、編集することはできません
。2.javaのbinディレクトリーをsecure_path構成に追加します。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/jdk1.8.0_221/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

3. Ctrl + Xを使用して終了し、[保存]を選択します

以上の操作により、問題は解決しました。
しかし、なぜですか?secure_pathはsudoを使用するときにPATH環境変数の値を定義することがわかりました。定義されていない場合、sudoを使用するときのPATH環境変数の値はありますか?
徹底的な質問の精神で、secure_path行をコメントアウトしようとしましたが、現時点ではsudoが任意のコマンドを使用できることがわかりました。

おすすめ

転載: blog.csdn.net/m0_46455711/article/details/107153870