为什么设置路径环境变量后无法登录

为什么设置路径环境变量后无法登录

我正在使用12.04LST,并且正在尝试手动安装oracle jdk7。

然后我更新/etc/environment以设置PATH变量。

这是原始文件内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

我将其更新如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/jdk1.7"
PATH="$PATH:$JAVA_HOME/bin"

然后我使用以下方法使其工作:

source /etc/environment

然后我输入javajavac,它就成功了。

然而,我重新启动计算机后,仍然停留在登录屏幕。

然后我用来ctrl+alt+f2进入终端。

/etc/envrionment像这样更新:

/usr/bin/sudo /usr/bin/nano /etc/emvrionment更改为以下内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/jdk1.7"

然后我就可以再次登录。

现在我有两个问题:

  1. PATH="$PATH:$JAVA_HOME/bin"为什么我添加该行后无法登录/etc/envirionment

  2. 设置的变量/etc/environment是否可供所有用户使用?

答案1

/etc/environment不是作为脚本执行而是作为配置文件读取,因此没有可用的 shell 扩展,因此无法读取变量。

如果您不想使用变量,请使用会话范围的变量~/.pam_environment

参考

答案2

好的。我检查了一下 - 它一定以某种方式依赖于 PAM,如果将以下内容写入 /etc/environment:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.7/bin" 然后获取它,它将正常工作,您将能够登录

相关内容