环境变量也叫env,environment等.

总之看到env关键字都是环境变量的意思.

本文将解锁Linux下的环境变量等相关姿势.

1-什么是环境变量

说到环境变量,很多同学都好像在哪听过,但是就是不懂它什么意思.

首先,环境变量很像"int a"这种代码里的变量,但是"int a"只能生效在代码里.

环境变量是生效在系统里的变量.

它是系统的变量,可以被修改,删除等.

不同的变量的值和代表的意思都不同.

例如PATH环境变量,当我们在控制台输入命令时,例如ls,cd,rm这些命令,那么系统就会去PATH这个环境变量里包含的所有路径里去一个一个路径的找这些命令,找到了就执行,没找到就报错.

容器中修改环境变量 修改环境变量可以干嘛_bash

环境变量在系统开机时就有默认的配置了,也就是在开机后,系统就有了默认的环境变量,也就是说有一些默认的值就被放到环境变量里了.

例如,通过如下命令可以查看到PATH环境变量里包含着哪些路径:

echo $PATH

如图:

容器中修改环境变量 修改环境变量可以干嘛_Ubuntu_02

我们可以看到,PATH里有很多的路径,那么这些就是环境变量了.

路径和路径之间以冒号":"隔开,我们整理下也就是:

/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games/usr/local/games

也就是说,当我们输入命令ls时,系统就会去这几个路径去找ls命令,找到了就执行,找不到就会报错.

我们通过如下命令可以知道,ls命令是在/bin目录下的:

which ls

如图:

容器中修改环境变量 修改环境变量可以干嘛_中修改环境变量_03

当我们执行ls时,系统就会去环境变量里的路径一个一个路径去找ls,结果在/bin目录下找到了它,然后就执行它.

也许你会问,假如我把/bin下的ls删了或者移到一个非环境变量的路径,是不是就找不到了呢?

答案是正确的.

例如我们把ls移到一个非环境变量的目录:

sudo mv /bin/ls /tmp/

如图:

容器中修改环境变量 修改环境变量可以干嘛_容器中修改环境变量_04

这个时候你再执行ls,你就会发现报错了:

容器中修改环境变量 修改环境变量可以干嘛_容器中修改环境变量_05

这个时候再把ls放回去:

sudo mv /tmp/ls  /bin/

就会发现又能用了:

容器中修改环境变量 修改环境变量可以干嘛_环境变量_06

到这里,想必你对PATH环境变量就有一定的理解了吧.

当然,假如你放到PATH里的其它目录,它也是照样能找到的.

当然,PATH只是环境变量中的一种.

除了PATH还有其它的环境变量,都有自己的值,意义也不同(详见后记).

因为PATH比较常用,所以讲PATH.

2-如何操作环境变量

关于Win怎么增加环境变量,请自己百度吧.

常规操作:

(1) 覆盖式修改:

export MYENV="123456";

(2) 追加式修改(常见于修改PATH):

假设: MYENV=aaaexport  MYENV=$MYENV:bbb结果是:MYENV=aaa:bbb

(3) 删除env:

export MYENV=

是的,直接=空就行了,等号一定要写.

上述环境变量操作语句,假如只是在命令行上敲,那么该环境变量只在当前控制台生效.

假如只是想仅在本控制台增加临时环境变量,可以直接在命令行上敲入:

export PATH=$PATH:/yourdir/yourpath

但是要注意:

(1) 这样环境变量只会在本控制台生效,在其它控制台不生效;

(2) 该控制台关闭后,这个env就失效了.

(3) 这样修改不会影响到系统的env,因为这样修改只是在本控制台生效的.

假如有同学说想永久增加环境变量怎么加呢?

例如我们在安装交叉编译器时就会用到永久增加env了.

如何永久增加请看下面的章节.


 2.1   Ubuntu增加环境变量


增加原理:

Ubuntu增加环境变量一般都是写在家目录的.bashrc这个隐藏文件里的,所以只需要往这个文件加入你的env配置就行了.

步骤如下:

系统: lubuntu-16.04 (64bit)

(1) 打开家目录下的.bashrc文件:

vi ~/.bashrc

(2) 在原来的PATH基础上,加入你的配置:

export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

这样的意思大概等价于:

PATH += /opt/FriendlyARM/toolschain/4.5.1/bin

注意,上述只是做个比喻,实际不能这么写入配置文件.

(3) 保存退出,下次登录新的控制台就生效了.

这时要注意,保存退出后,在本控制台是不生效的,新打开控制台才能生效.

因为打开新的控制台时,都会事先去读取.bashrc这个文件,所以就会永久生效了.


 2.2   嵌入式Linux增加env


这个要注意了.

假如你的嵌入式Linux的文件系统是busybox文件系统,就不能像2.1一样加入到~/.bashrc里了.

假如是Ubuntu文件系统就可以.

那么如何判断是busybox还是Ubuntu文件系统的呢?

很简单: 有apt-get命令的就是Ubuntu,反之就是busybox;

直接在控制台上敲apt-get,假如报错"apt-get: not found"的,也就是找不到apt-get的,那么就是busybox了.

假如是busybox,增加env的方法就是加入到/etc/profile里了.

值得注意的是,在嵌入式Linux里,控制台的所有env都是/etc/profile设置的.

也就是说,在其它地方设置的env在控制台是不生效的!!!

例如在/etc/init.d/rcS里设置的env,只在/etc/init.d/rcS这个脚本里生效,出了这个脚本就不生效了.

这个是个细节.

方法如下:

vi /etc/profile

加入你的env设置:

export PATH=$PATH:/bin/sbin

当然,上述加入的路径只是举个例子,实际按照你想加入的路径为准.

后记

(1) Linux一些常见的环境变量:

名称

作用

PATH

命令的环境变量

LD_LIBRARY_PATH

额外连接库的环境变量,这个在嵌入式比较常设置,当程序(包含命令)运行时,除了会去默认的库路径(例如/lib)找动态库外.还会默认去这个env包含的路径下找依赖的动态库

HOME

家目录的路径

PWD

当前所在的绝对路径

SHELL

默认的shell解析器

USER

当前登录的用户

.......

.........

(2) 想查看Linux所有环境变量,输入命令即可:

export

如图(部分截图):

容器中修改环境变量 修改环境变量可以干嘛_环境变量_07


☆ END ☆


关注梅老师

学习嵌入式

梅老师


容器中修改环境变量 修改环境变量可以干嘛_容器中修改环境变量_08

点个赞,证明你还爱我