新しくインストールされた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が任意のコマンドを使用できることがわかりました。