Linux 配置环境变量后无法登录的解决方案

| 分类 technology  | 标签 环境变量 

之前在 Ubuntu 下安装了 TeXLive 并配置了环境变量,之后注销发现输入正确密码后仍弹回到登录界面,而输入错误密码后提示密码错误,说明并非密码问题,在网上搜寻一番后发现时环境变量配置出错,之后得到了解决,现将方法记录如下。

Linux 的环境变量读取机制

  • 在登陆时,操作系统定制用户环境时读取的第一个文件是 /etc/profile,此文件为系统的每个用户设置环境信息,当用户第一次登陆时,该文件被执行。
  • 在登陆时操作系统读取的第二个文件是 /etc/environment,系统在读取用户自己的 profile 前,设置环境文件的环境变量。
  • 在登陆时用到的第三个文件是 ~/.profile 文件,每个用户都可使用该文件输入专用于自己使用的 shell 信息,该文件仅仅执行一次。默认情况下,它设置一些环境变量,执行用户的 .bashrc 文件。/etc/bashrc 为每一个运行 bash shell 的用户执行此文件,当 bash shell 被打开时,该文件被读取。

无法登录的原因

由上可知,系统启动时会先读取 /etc/profile,然后读取 /etc/environment,最后才是 ~/.profile 文件,而在 /etc/environment 中也设置有环境变量 PATH,如果你在 ~/.profile 中也设置了环境变量 PATH,那么就会覆盖原来的 /etc/environment 中设置的环境变量 PATH。

因此,~/.profile 文件中的环境变量设置一定不可大意,且在其设置的环境变量中要重新载入之前的环境变量,即添加 $PATH,且以冒号分割。

比如以我安装的 TeXLive 为例,正确的环境变量设置应该为:

PATH=/usr/local/texlive/2014/bin/x86_64-linux:$PATH; export PATH
MANPATH=/usr/local/texlive/2014/texmf-dist/doc/man:$MANPATH; export MANPATH
INFOPATH=/usr/local/texlive/2014/texmf-dist/doc/info:$INFOPATH; export INFOPATH

解决方法一

在登录界面可以通过 Ctrl + Alt + F1~F6 的方式进入命令行,再通过 Ctrl + Alt + F7 的方式进入图形界面。

因此我们可以进入图形界面登录 root 账户,将之前修改的环境变量删除或者更正即可。

注意事项:我们在登录不同的账户时, 所对应的目录是不同的,例如 John 用户对应 /home/John/,而 root 用户对应 /root/,因此在以 root 用户登陆时,一定要注意环境变量文件的路径。

解决方法二

若命令行下打开文件乱码,可考虑新建用户并登录,然后以 root 权限修改之前用户的配置文件,关于如何新建用户此处不再赘述。


上一篇     下一篇