我该如何在启动时修改 PATH 以影响所有人?

我该如何在启动时修改 PATH 以影响所有人?

我在 中安装了 JDK /opt,并在 中放置了一个 shell 脚本/etc/profile.d/,用于export修改 PATH 变量,以便可以顺利运行 Java。问题是,这只对我的本地帐户有效,对 无效sudo。如果我尝试sudo该命令,它会显示sudo: java: command not found。我尝试将命令放在和export的末尾,但这两种选择似乎都无法改变这种行为。我希望能够运行,那么在哪里可以修改启动时的 PATH 以便可以看到它?.bashrcrc.localsudo javasudo

编辑:根据记录,这些是我在每个尝试过的地方添加的行:

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

答案1

你的问题不是每个人,甚至不是任何人=root。你的问题只是sudo因为sudo使用自己的 PATH;它不使用您(调用)shell 中设置的 PATH,或任何其他 shell 或 shell 配置(除非您使用sudo -i运行目标用户(默认 root)的 shell,并使用其通常的“登录”配置),因为使用用户可控制的 PATH 可能会导致安全性被破坏,违反 sudo 存在的全部理由。请参阅

如何设置 sudo 命令的路径
为什么 `sudo env "PATH=$PATH"` 会做任何事情?
通过 sudo 传递 PATH
作为 sudo 用户使用 PATH 变量时出现的问题

最直接的解决方案是使用要运行的程序的完整路径名;而不是直接输入,你可以这样做

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

在 java 中搜索你的然后 shell 的 PATH 调用 sudo 并执行结果

相关内容