起動時に全員に影響を与えるように PATH を変更するにはどうすればよいですか?

起動時に全員に影響を与えるように PATH を変更するにはどうすればよいですか?

に JDK をインストールし/opt、 にシェル スクリプトを配置して、/etc/profile.d/PATHexport変数を変更して Java をうまく実行できるようにしました。問題は、これがローカル アカウントでのみ機能し、 では機能しなかったことです。コマンドsudoを実行しようとすると、 と表示されます。 コマンドをおよびの末尾に配置しようとしましたが、どちらのオプションでもこの動作は変わらないようです。 を実行できるようにしたいのですが、 が を認識するように起動時に PATH を変更できる場所はどこですか?sudosudo: java: command not foundexport.bashrcrc.localsudo javasudo

編集: 記録のために、私が試みたすべての場所に追加した行は次のとおりです。

export JAVA_HOME="/opt/jdk-16.0.2"
export PATH="$PATH:${JAVA_HOME}/bin"

答え1

あなたの問題は、全員、あるいは誰でも=root ということではありません。あなたの問題はsudo独自の PATH を使用するためですsudo。呼び出し元のシェルで設定された PATH や他のシェルまたはシェル設定は使用しません (sudo -i通常の「ログイン」設定でターゲット ユーザーのシェル (デフォルトのルート) を実行する を使用しない限り)。ユーザーが制御できる PATH を使用すると、セキュリティが破られる可能性があり、sudo の存在理由全体に違反する可能性があるためです。

sudoコマンドのパスを設定する方法
`sudo env "PATH=$PATH"` はなぜ何かを実行するのでしょうか?
sudo 経由で PATH を渡す
sudo ユーザーとしての PATH 変数の問題

最も直接的な解決策は、実行したいプログラムのフルパス名を使用することです。入力する代わりに、次のようにすることができます。

sudo $(which java) # or maybe $(type -p java) in bash 

Javaを検索するあなたのシェルのPATHは、sudoを次のように呼び出します。結果

関連情報