Ubuntu - Root 用户无法看到 $JAVA_HOME 变量扩展到 $PATH

Ubuntu - Root 用户无法看到 $JAVA_HOME 变量扩展到 $PATH

$JAVA_HOME我在“/etc/environment”中创建了一个变量

JAVA_HOME="/usr/lib/jvm/jdk"
PATH="...bla bla bla:$JAVA_HOME/bin"

我还进行了编辑/etc/profilesource /etc/environment以便所有用户都能熟悉 Java。并且目录本身已设置为 755 以供访问。

打印输出root如下env

LANG=C.UTF-8    
SUDO_GID=1000
USERNAME=root
JAVA_HOME=/usr/lib/jvm/jdk
SUDO_COMMAND=/bin/su
USER=root
PWD=/home/ssuser
HOME=/root
SUDO_USER=ssuser
SUDO_UID=1000
MAIL=/var/mail/root
TERM=xterm
SHELL=/bin/bash
SHLVL=2
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin

ssuser但是,当我执行与不使用-ing相同的操作时sudo,环境变量$JAVA_HOME将扩展为实际路径。

SSH_CONNECTION=193.128.134.115 18497 10.1.4.4 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
JAVA_HOME=/usr/lib/jvm/jdk
XDG_SESSION_ID=2
USER=ssuser
PWD=/home/ssuser
HOME=/home/ssuser
SSH_CLIENT=193.128.134.115 18497 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/ssuser
TERM=xterm
SHELL=/bin/bash
SHLVL=1
LOGNAME=ssuser
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk/bin
LESSOPEN=| /usr/bin/lesspipe %s

/etc/sudoers这与env_var 重置/保留设置中的设置无关。因为我已经在另一台计算机上尝试过了,效果很好。

我有点不明白为什么会发生这种情况。另外,我注意到一个非常奇怪的事情是,对于单个会话 sudo 用户不会被提示输入密码。我已经检查过/etc/sudoers,它已正确设置为询问密码root

我尝试过关闭会话并重新打开。我可以将他们视为普通用户,而不是 root。此外,重新启动不会做任何不同的事情。

答案1

据我所知,您不需要放入源代码/etc/environment/etc/profile因为它不是 shell 脚本。

它应该只包含key=value对(不包含")。 Plus/etc/environment不会像$JAVA_HOME这里那样替换变量。

/etc/environment在启动时加载,因此您需要重新启动,它将可供所有用户使用。

参考有一条注释专门指出变量扩展在以下情况下不起作用/etc/environment

注意:变量扩展在 /etc/environment 中不起作用。

相关内容