zoukankan      html  css  js  c++  java
  • 解决Ubuntu环境变量错误导致无法正常登录  (command 'xxx' is available in bin ls)

      一、问题产生

     

    配置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

  • 相关阅读:
    JavaScript -- 条件语句和循环语句
    xpath的|
    Pythonic
    4k图片爬取+中文乱码
    xpath-房价爬取
    (.*?)实验室
    模块的循环导入
    bs4-爬取小说
    糗图-图片爬取
    re实战记录
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6737877.html
Copyright © 2011-2022 走看看