[Linux学习]修改bashrc、/etc/profile环境变量导致系统命令不能使用

首先我认为,你既然遇到了这个问题,说明你曾经在配置环境变量的时候修改过当前用户的~/.bashrc或者全局的/etc/profile文件中的环境变量。
但又因为各种原因,比如敲的时候粗心大意敲错单词,或者语法有问题,或者误删了什么,导致最重要最基本的几个PATH在配置时丢失(如/bin、/sbin、/usr/bin),这其实就是为什么许多系统的命令(如ls、vim、su)都用不了的原因,也就是可能出现像我一样遇到的如下图所示的问题:
[Linux学习]修改bashrc、/etc/profile环境变量导致系统命令不能使用

讲真,出现这样的问题,尤其是“我只会用这么几个命令啊环境变量我是照着教程配的啊怎么到最后全给改崩了,而且智障的我还忘记保存快照了所以我是不是要重装虚拟机重新再配之前配好的东西了”这样的心路历程…..是不是整个人都不大好了?= =
不要沮丧啦,想要解决问题,就要知道问题发生的本质是什么。

所以首先,我们需要了解一下环境变量PATH到底是什么。
先来贴一下百度百科的解释:
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

嗯,所以,到底什么意思= =

通俗的来说(我所理解的,不够官方),我们想在随时一个文件夹里用ls、vim等命令(其实所谓的Linux命令本质还是shell脚本),但是其实这些脚本都是存在固定的地方的,比如/bin或者/usr/bin等,但我们每次用的时候又不大可能输绝对路径去调用它,所以环境变量就给我们提供了方便,也就是说,当我们用这个东西(比如ls)的时候,在当前目录下找不到的时候,就会去PATH路径下找,来方便我们做各种操作。

好了,现在我们大体知道环境变量是干什么的了,那么我们出现问题的原因又是什么呢?
首先,大家的问题大体可以分为两种:
以“我改坏了环境变量现在我用不了vim啦!”这个问题来举例:
① 我在随便一个目录下用不了vim了
解决办法:切换到提示所说的目录下,比如vim就是/usr/bin,再执行你要的命令,比如 vim ~/.bashrc,如果文件成功了,那就不再需要后话了;
② 我在/usr/bin目录下,像上述方法一样操作了,但还是提示不行啊!
解决办法:这种情况跟我上述截图是一样的,其实想想本质,vim也是个可执行文件,我就试了一下/.vim ~/.bashrc,然而就这么被我蒙对了,bashrc文件出来了。
所以呀,找找哪出问题,好好改改,改不好?没事,咱们这不是有方法呢吗。改错了有办法给你解决,所以你的环境变量一定会改好的。

对啦,不要忘了每次改完之后source ~/.bashrc一下。
source用不了?切换到/bin下就好啦。

因为配置hadoop hive sqoop等东西的时候,经常改环境变量,敲的时候会敲错,有时增加新的PATH之前忘了加dollar引用符,改坏过好几次,解决的时间也都蛮久的,不过了解了环境变量最本质的机制,问题总是会解决的,而且不是那种重装大法木鱼脑袋般的解决办法。

遇到问题千万不要放弃!多多研究!可能当时觉得是浪费时间了,但是回头想想,在解决问题解决Bug的过程中,会学到很多知识!

如果大家又遇到了不一样的问题,欢迎评论!分享你的解决方法或者我们一起解决!比心大家!