Ubuntu 12.04 出现“Could not write bytes: broken pipe”原因与解决
根据我的实际经验和网上搜索到的一些信息,出现这个问题的原因一般是修改了:/etc/enviroment 并且出现了一些错误,导致启动异常。
这有可能是:在修改的时候出现了一些逻辑上的错误包括打错字之类的;也有可能是修改的环境变量(如PATH)导致一些系统需要的程序被自定义的替代了。
我在将/etc/enviroment文件中我添加的东西删除掉之后,一切正常。
所以如果要加入或修改环境变量,还是在~/profile或者/etc/profile(/etc/profile.d/)中进行修改吧,详见
搞清楚Linux下各种环境变量脚本的启动顺序,对于用好Linux,解决各种奇怪的找不着依赖文件的错误有很大的帮助。
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文件,写入相应内容,例如给eclipse使用的JAVA_HOME。
系统:Ubuntu 12.04 64bit
现象:昨天装了几款软件(QT4,以及几款软件更新),今天再开机,没等进入登录界面就黑屏显示“could not write bytes: Broken pipe”
解决:
1. 开机按“Ctrl + Alt + F1”,进入命令行模式,并登录
2. 输入ls,发现环境变量没有问题。(若环境变量有问题,请参考其他资料)
3. 执行startx。提示“.../usr/bin/X:No such file or directory”
4. 执行sudo apt-get install xserver-xorg
5. 重启即可
评论:搜索大部分出现Broken pipe问题的都是ubuntu 64bit版本,真是。。。!!而且多数的问题都是用户在配置了错误的环境变量导致的,但是解决我遇到问题的是上面这种情况,贴出以供大家参考!