1.在使用java的时候,要添加环境变量。一般我们是export一些变量,比如:
export JAVA_HOME=....

export PATH=$PATH:$JAVA_HOME/bin

但是,当我们在export PATH的时候忘记在等号右边加红色的$PATH:的时候会导致我们在使用一些常用命令,比如ls,sudo,vim,clear等系统自带的命令的时候会出现commond not found的错误。

  • 这些错误,都是因为PATH环境变量的影响。
2.知道问题出在哪里,但是怎么解决呢?因为sudo、vim都用不了。

linux还是很人性化的,系统会提示我们要使用的指令存放的正确位置,比如使用clear时提示的:

Command 'clear' is available in '/usr/bin/clear'
  1. clear命令是存放在’/usr/bin’目录下的。

  2. 要编辑/etc/profile来修改环境变量,正常情况下使用的命令是:sudo vim /etc/profile

  3. 现在,系统找不到sudo 命令,也找不到vim命令,所以只能人工指定它们的绝对路径了。sudo 和 vim都是存放在’/usr/bin’目录下的,所以sudo和vim的绝对路径分别是:/usr/bin/sudo /usr/bin/vim

  4. 因此要编辑/etc/profile要使用的命令应该这样写: /usr/bin/sudo /usr/bin/vim /etc/profile

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

3.PS: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.

Logo

更多推荐