解决Ubuntu环境变量错误导致无法正常登录 (command 'xxx' is available in bin ls)
一、问题产生
配置JDK时,按照搜索到的一篇文章中的做法,修改了/etc/profile文件里的内容。在原内容保持不变的基础上,大致添加了以下内容:
export JAVA_HOME=....
export PATH=....
然而,重启再次试图登录X windows时,发生错误。输入密码后没有反应,仍然停留在Login界面。图形界面登录不进去,只好Ctrl+Alt+F1进入CLI试试。
二、定位问题
进入命令行界面,暂时还不知道问题的原因。与平时不同的是,登录命令行系统返回欢迎信息的后面,还报了很多错误,如图所示:

很自然的目光首先停留在最长的那些行上面:
The command could not be located because '/usr/bin:/bin' is not included in the PATH environment variable.
意思是:找不到命令,因为'/usr/bin:/bin'没有被包含在环境变量PATH中。
这就是问题产生的原因:环境变量PATH错误。联想到修改/etc/profile文件时确实对PATH进行过操作,所以解决问题的最简单的方法就是让/etc/profile恢复到修改之前的状态。
看完错误信息,打算清屏进行下一步工作,输入:clear。同样报错:
Command 'clear' is available in '/usr/bin/clear'
The command could not be located because '/usr/bin' in not included in the PATH environment variable.
clear:command not found
又试了几个其他常用的命令:ls, vim,cat等,错误原因相同,均指向环境变量PATH.
三、PATH作用
Linux有PATH,在windows下配置过JDK的也肯定注意到windows也有path,这个PATH到底是做什么用的呢? 下面解释一下:
当我们在命令行(Linux下的terminal或者tty1~6,windows下的cmd中)输入一个命令时,实际上执行的是一个程序。比如使用 ls 命令,实际上是运行 ls 这个程序,它的功能是列出当前目录下的内容。但是,默认情况下搜寻要运行的程序时,仅是在当前目录下寻找的。而我们平时使用的命令不论在哪个目录下都能执行,难道是每个目录下都有这些命令的拷贝?当然不是,这样对空间的浪费太严重了。
现在操作系统采取的普遍做法是,通过PATH变量指定命令存放的位置。一旦使用某个命令时,按照PATH中制定目录的顺序去搜寻指令对应的程序。所以正常情况下,使用echo $PATH查看环境变量PATH的内容如下:
分号 ":" 表示分隔符,分隔各个目录。
由于PATH错误,我在使用指令时系统不能正常到存放指令的目录中去寻找,因此会提示:Command not found.
四、解决方法
很人性化的是,系统会提示我们要使用的指令存放的正确位置,比如使用clear时提示的:Command 'clear' is available in '/usr/bin/clear'。clear命令是存放在'/usr/bin'目录下的。
要编辑/etc/profile,正常情况下使用的命令是:sudo vim /etc/profile
现在,系统找不到sudo 命令,也找不到vim命令,所以只能人工指定它们的绝对路径了。sudo 和 vim 都是存放在'/usr/bin'目录下的,所以sudo和vim的绝对路径分别是:/usr/bin/sudo /usr/bin/vim
因此要编辑/etc/profile要使用的命令应该这样写: /usr/bin/sudo /usr/bin/vim /etc/profile
只需要把自己之前添加的内容删除掉就可以了(最好是能修改成正确的,搞不定也要至少恢复原状吧),然后保存重启系统。

正常状态下重启使用:sudo reboot
当然现在也不行,要使用 /usr/bin/sudo /sbin/reboot
解决Ubuntu环境变量错误导致无法正常登录 (command 'xxx' is available in bin ls)的更多相关文章
- 解决Ubuntu环境变量错误导致无法正常登录
一.问题产生 配置JDK时,按照搜索到的一篇文章中的做法,修改了/etc/profile文件里的内容.在原内容保持不变的基础上,大致添加了以下内容: export JAVA_HOME=.... exp ...
- ubuntu 环境变量修改和恢复总结[收藏]
在Ubuntu中有如下几个文件可以设置环境变量/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行./etc ...
- Ubuntu环境变量——添加与删除
转自:http://beanocean.diandian.com/post/2013-11-09/40060047963 注: 1.作者的系统是Ubuntu 13.10,在其他linux发行版中环境变 ...
- ubuntu 环境变量修改和恢复总结
通常设置环境变量有三种方法: 一.临时设置export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64export PATH=$JAVA_HOME/:$ ...
- Linux:修改Ubuntu环境变量后bash找不到
1.问题显示 修改环境变量,导致命令全部失效 2.解决办法 #使用备份bin export PATH=/usr/bin:/bin 之后使用命令就可以了. 3.找到修改的环境变量 一般修改的环境变量 ...
- [svc]mount命令及解决因/etc/fstab错误导致系统不能启动故障
mount命令-手动挂载设备 格式: mount [options] [-t fstype] [-o option] 设备 挂载点 mount -n -o remount,rw / - Mount t ...
- mac下host配置 + mac修改了环境变量却不生效:zsh: command not found: xxx
https://blog.csdn.net/hlllmr1314/article/details/52228672 在/etc/profile中配置了go语言环境变量: export GOROOT=/ ...
- 修改.bashrc文件PATH变量错误导致系统大部分命令失效
修改.bashrc环境变量,在文件最后添加openssl变量, 本来应该写 export PATH=$PATH:/usr/local/openssl/bin 误写成 export PATH=/usr/ ...
- Ubuntu环境变量(.profile)加载顺序
Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile -->/etc/bash.bashrc --> /etc/prof ...
随机推荐
- JSOI2016酱油记
高一,第一次参加NOIP. 后悔初中没有报过名...唉,后悔也来不及了. 不知道自己一个暑假干了什么...算法没学多少,脑子倒是越来越不好使了. 过了初赛,数周后一脸茫(meng)然(bi)地去考场. ...
- Mac-配置SecureCRT
1. Tools - Create Public Key - 2. Select Key Type 3. Create Passphrase 4.Input Key Length 5. Genera ...
- WCF测试小程序
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;u ...
- 编译opencv有关cuda的代码
opencv3.2提供了cuda很好的支持,cuda的opencv接口,让用户想使用opencv那样去使用cuda,不用写cuda代码 一开始编译opencv有关cuda的代码,opencv 里sam ...
- 学习OpenResty编程
1.Windows版本的下载位置 https://github.com/LomoX-Offical/nginx-openresty-windows Linux下OpenResty的下载和安装 http ...
- 使用 gulp 压缩图片
请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 压缩 图片文件可降低文件大小,提高图片加载速度. 找到规律转换为 gulp 代码 规律 找到 images/ ...
- java 连接带 kerberos 验证的 phoenix
唉,网上的资料比较少,找了好久,压根不知道如入告诉 phoenix 客户端来使用 kerberos 啊.. 然后就想到了,这东西开源的应该有相关的单元测试吧..啊哈哈哈哈哈哈,果然 https://g ...
- HDU 6324.Problem F. Grab The Tree-博弈(思维) (2018 Multi-University Training Contest 3 1006)
6324.Problem F. Grab The Tree 题目看着好难,但是题解说的很简单,写出来也很简单.能想出来就是简单的,想不出来就难(讲道理,就算是1+1的题目,看不出来就是难的啊). 和后 ...
- (6)python 循环控制
一.if语句 1.条件执行和if语句 2.else子句 3.elif子句 多个检查条件时 4.嵌套代码 5.空语句 使用pass占位 6.断言 关键字 assert 判断表达式前加上这个关键字表示, ...
- POJ 3264 Balanced Lineup 【线段树/区间最值差】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 62103 Accepted: 29005 Cas ...