您的位置:首页 > 运维架构 > Linux

linux添加环境变量对/etc/profile文件进行修改过后导致命令用不了

2017-12-19 13:38 696 查看

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'。


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

只需要把自己之前添加的内容删除掉就可以了(最好是能修改成正确的,搞不定也要至少恢复原状吧),然后保存重启系统(或者使用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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐