环境变量也叫env,environment等.
总之看到env关键字都是环境变量的意思.
本文将解锁Linux下的环境变量等相关姿势.
1-什么是环境变量
说到环境变量,很多同学都好像在哪听过,但是就是不懂它什么意思.
首先,环境变量很像"int a"这种代码里的变量,但是"int a"只能生效在代码里.
环境变量是生效在系统里的变量.
它是系统的变量,可以被修改,删除等.
不同的变量的值和代表的意思都不同.
例如PATH环境变量,当我们在控制台输入命令时,例如ls,cd,rm这些命令,那么系统就会去PATH这个环境变量里包含的所有路径里去一个一个路径的找这些命令,找到了就执行,没找到就报错.
环境变量在系统开机时就有默认的配置了,也就是在开机后,系统就有了默认的环境变量,也就是说有一些默认的值就被放到环境变量里了.
例如,通过如下命令可以查看到PATH环境变量里包含着哪些路径:
echo $PATH
如图:
我们可以看到,PATH里有很多的路径,那么这些就是环境变量了.
路径和路径之间以冒号":"隔开,我们整理下也就是:
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games/usr/local/games
也就是说,当我们输入命令ls时,系统就会去这几个路径去找ls命令,找到了就执行,找不到就会报错.
我们通过如下命令可以知道,ls命令是在/bin目录下的:
which ls
如图:
当我们执行ls时,系统就会去环境变量里的路径一个一个路径去找ls,结果在/bin目录下找到了它,然后就执行它.
也许你会问,假如我把/bin下的ls删了或者移到一个非环境变量的路径,是不是就找不到了呢?
答案是正确的.
例如我们把ls移到一个非环境变量的目录:
sudo mv /bin/ls /tmp/
如图:
这个时候你再执行ls,你就会发现报错了:
这个时候再把ls放回去:
sudo mv /tmp/ls /bin/
就会发现又能用了:
到这里,想必你对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
如图(部分截图):
☆ END ☆
关注梅老师
学习嵌入式
梅老师
点个赞,证明你还爱我