Ubuntu启动的时候加载环境变量的过程大致为:
/etc/enviroment
/etc/profile
-->/etc/bash.bashrc
-->/etc/profile
-->/etc/profile.d下的所有.sh文件
~/.profile (或~/.bash_profile 或 ~/.bash_login)
-->~/.bashrc (如果在运行bash才运行)
-->~/.bash_aliases
-->/etc/bash_completion
其中前两个是系统环境变量,最后一个是当前用户的局部环境变量。
/etc/enviroment在系统一些核心组件加载完成后最先调用,很多外围的程序都依赖它运行,
如果这里面出现了什么问题,那么很可能导致系统无法正常启动,相当于是系统级别的公共环境变量
/etc/profile 在启动登陆环境时被首先执行,相当于是应用级的公共环境变量
~/.profile在shell被打开时,次于/etc/profile执行,相当于是应用级的用户环境变量
注意~/.profile是在打开shell时执行的,也就是说如果在它或者它会调用的脚本(一般是.bashrc)里面配置的环境变量,在图形界面下是无效的!
如果想要配置在图形界面下依然有效的环境变量,可以放在/etc/prfile.d/下建立一个.sh文件,写入相应内容,例如JAVA_HOME。
出现本案例所描述的问题的原因一般是修改了:/etc/enviroment并且出现了一些错误,导致启动异常。
这有可能是:在修改的时候出现了一些逻辑上的错误包括打错字之类的;也有可能是修改的环境变量(如PATH)导致一些系统需要的程序被自定义的替代了。
将/etc/enviroment文件中我添加的东西删除掉之后,一切正常。
所以如果要加入或修改环境变量,还是在~/profile或者/etc/profile(/etc/profile.d/)中进行修改吧。
因为无法登录图形界面所以需要切换登陆模式,使用快捷键:ctrl+alt+f1(ubuntu12.04) 或 ctrl+shift+alt+f1
若登录成功后还是无法使用vi、sudo等命令,出错提示:The command count not be located because '/bin' is not included in the PATH
是由于没有加载到/usr/bin/下的命令,所以要执行export操作:export PATH=/usr/bin/:$PATH
这个时候,就可以sudo vi /etc/enviroment 和 sudo vi /etc/proflie了。
本案例也会出现类似 “Checking battery state” 提示信息。
进入命令行登录模式后:
sudo apt-get install gdm
sudo dpkg-reconfigure gdm
重新选择显示器,从GDM到LightDM,选lightdm模式,重启即可。
如果已经安装刚 sudo/etc/init.d/lightdmrestart 切换即可。