我在 中安装了 JDK /opt
,并在 中放置了一个 shell 脚本/etc/profile.d/
,用于export
修改 PATH 变量,以便可以顺利运行 Java。问题是,这只对我的本地帐户有效,对 无效sudo
。如果我尝试sudo
该命令,它会显示sudo: java: command not found
。我尝试将命令放在和export
的末尾,但这两种选择似乎都无法改变这种行为。我希望能够运行,那么在哪里可以修改启动时的 PATH 以便可以看到它?.bashrc
rc.local
sudo java
sudo
编辑:根据记录,这些是我在每个尝试过的地方添加的行:
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 并执行结果。