一、问题产生

配置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环境变量错误导致无法正常登录的更多相关文章

  1. 解决Ubuntu环境变量错误导致无法正常登录  (command 'xxx' is available in bin ls)

    一.问题产生 配置JDK时,按照搜索到的一篇文章中的做法,修改了/etc/profile文件里的内容.在原内容保持不变的基础上,大致添加了以下内容: export JAVA_HOME=.... exp ...

  2. ubuntu 环境变量修改和恢复总结[收藏]

    在Ubuntu中有如下几个文件可以设置环境变量/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行./etc ...

  3. Ubuntu环境变量——添加与删除

    转自:http://beanocean.diandian.com/post/2013-11-09/40060047963 注: 1.作者的系统是Ubuntu 13.10,在其他linux发行版中环境变 ...

  4. ubuntu 环境变量修改和恢复总结

    通常设置环境变量有三种方法: 一.临时设置export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64export PATH=$JAVA_HOME/:$ ...

  5. Linux:修改Ubuntu环境变量后bash找不到

    1.问题显示 修改环境变量,导致命令全部失效  2.解决办法 #使用备份bin export PATH=/usr/bin:/bin  之后使用命令就可以了. 3.找到修改的环境变量 一般修改的环境变量 ...

  6. [svc]mount命令及解决因/etc/fstab错误导致系统不能启动故障

    mount命令-手动挂载设备 格式: mount [options] [-t fstype] [-o option] 设备 挂载点 mount -n -o remount,rw / - Mount t ...

  7. 修改.bashrc文件PATH变量错误导致系统大部分命令失效

    修改.bashrc环境变量,在文件最后添加openssl变量, 本来应该写 export PATH=$PATH:/usr/local/openssl/bin 误写成 export PATH=/usr/ ...

  8. Ubuntu环境变量(.profile)加载顺序

    Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile   -->/etc/bash.bashrc   --> /etc/prof ...

  9. node.js安装后出现环境变量错误找不到node

    安装node.js和bower之后,运行bower出现/usr/bin/env: 'node': No such file or directory错误 这个错误是由于安装完node.js环境变量并没 ...

随机推荐

  1. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  2. javascript中Date对象的应用

    前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 使用type=number的两个input分别作为年和月的输入 ...

  3. serializable parcelable

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 在使用 内存的 时候,parcelable 比 serializable 性能高. pa ...

  4. Opencv学习笔记3:边缘检测算子的实现方法

    一.边缘检测概念 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘.效果如图: 接下来介绍一下边缘提取的几种算子,具体证明过程 ...

  5. BZOJ2599 IOI2011Race

    题目:一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. 点分治,我们考虑经过根节点的路径,t[x]表示路径长为x时最少的边数,然后每次拿栈记下来清空. 注意先搜索再更新,这样可以避免同一 ...

  6. [CF126D]Fibonacci Sums/[BJOI2012]最多的方案

    [CF126D]Fibonacci Sums/[BJOI2012]最多的方案 题目大意: 将\(n(n\le10^9)\)表示成若干个不同斐波那契数之和的形式,求方案数. 思路: 如果不考虑\(0\) ...

  7. IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) C. Bear and Up-Down 暴力

    C. Bear and Up-Down 题目连接: http://www.codeforces.com/contest/653/problem/C Description The life goes ...

  8. java如何禁掉反射

    SecurityManager 有一个checkMemberAccess这个方法可以阻止利用反射:如: SecurityManager sm = new SecurityManager(); sm.c ...

  9. Android的Master/Detail风格界面中实现自定义ListView的单选

    原文在这里:http://duduli.iteye.com/blog/1453576 可以实现多选,那么如何实现单选呢,这里我写了一个非常简单的方法: public void onListItemCl ...

  10. IDA 显示函数名称技巧

    http://blog.csdn.net/safedebug/article/details/17061735v