zoukankan      html  css  js  c++  java
  • 解决Ubuntu环境变量错误导致无法正常登录

    转摘自:http://blog.163.com/shao_yuru/blog/static/130517606201010310581842

     一、问题产生

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

    export JAVA_HOME=....

    export PATH=....

    然而,重启再次试图登录X windows时,发生错误。输入密码后没有反应,仍然停留在Login界面。图形界面登录不进去,只好Ctrl+Alt+F1进入CLI试试。

     

    二、定位问题

    进入命令行界面,暂时还不知道问题的原因。与平时不同的是,登录命令行系统返回欢迎信息的后面,还报了很多错误,如图所示:

     

    解决Ubuntu环境变量错误导致无法正常登录 - windflyer - 邵玉如  的博客

     

    很自然的目光首先停留在最长的那些行上面:

    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

    只需要把自己之前添加的内容删除掉就可以了(最好是能修改成正确的,搞不定也要至少恢复原状吧),然后保存重启系统。

     解决Ubuntu环境变量错误导致无法正常登录 - windflyer - 邵玉如  的博客

     

    正常状态下重启使用:sudo reboot

    当然现在也不行,要使用 /usr/bin/sudo /sbin/reboot

    转摘自:http://blog.163.com/shao_yuru/blog/static/130517606201010310581842



  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/ycpanda/p/3637267.html
Copyright © 2011-2022 走看看