一文总结linux的环境变量
文章目录
一、开篇
在Linux操作系统中,环境变量用于存储关于shell会话和工作环境的信息。使用环境变量我们可以获取系统信息、存储临时数据和配置信息。
在linux 的bash shell中,环境变量分为:全局环境变量
和局部环境变量
。
二、全局环境变量
全局环境变量对shell会话以及生成的子shell都是可见的。
(2-1)查看全局变量
使用env
、printenv
或echo
查看全局环境变量:
- env:查看系统中的所有全局环境变量。不能用于查看单个环境变量。
- printenv:查看系统中的所有全局环境变量。可以用来查看单个的环境变量。
- echo:输入对应的全局环境变量名称,可以查看全局环境变量值。
当查看单个全局环境变量值时,printenv
不需要加
符
号
;
而
‘
‘
‘
e
c
h
o
‘
‘
‘
需
要
加
符号;而```echo```需要加
符号;而‘‘‘echo‘‘‘需要加符号:
(2-2)设置全局变量变量
在设定全局环境变量的进程所创建的子进程中,所设置的全局环境变量都是可见的。
MY_NAME = "iriczhao" #双引号是必需的
export MY_NAME #使用export导出MY_NAME,使其为全局环境变量。
【注意】设置环境变量值的等号两端不能有空格!!!
(2-3)删除全局环境变量
在我们创建全局环境变量后,可能在某一天不再需要该环境变量啦,这时候就需要使用unset
命令删除它。例如:
unset MY_NAME
注:MY_NAME前面不能加$符号。
关于什么时候使用 符 号 , 什 么 时 候 不 使 用 , 只 需 要 记 住 一 个 规 则 即 可 : ∗ ∗ 如 果 要 用 到 变 量 , 使 用 符号,什么时候不使用,只需要记住一个规则即可:**如果要用到变量,使用 符号,什么时候不使用,只需要记住一个规则即可:∗∗如果要用到变量,使用;如果需要操作变量,不使用$符号。**
对于该规则,printenv
这一个命令除外,其他均适用。
三、局部环境变量
设置局部环境变量,就是不使用export
命令导出环境变量。其他操作:查看、删除环境的操作方法与全局环境变量一样。唯一需要注意的是:
- 设置局部环境变量后,只能在当前的shell环境下使用,如果生成另一个shell,那么在子shell中不能使用。
- 当在子进程中设置了局部环境变量,一旦退出子进程后,这个局部环境变量将不可使用。
四、关于linux环境变量的重要知识
1、默认情况下,bash shell中会定义一些默认的环境变量。即提前定义了一些环境变量,有的环境变量有值;有的没有值。具体定义了哪些环境变量,以及对应的含义和变量值。可以网上搜索查阅。
2、在linux平台下进行软件开发,对于PATH环境一定不陌生。PATH环境变量定义了用于进行命令和程序查找的目录。如果在shell环境中直接运行程序,就需要将程序所在的目录路径添加到PATH环境变量中。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/iriczhao/embedderTools/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin
每个路径之间使用冒号(:)分割。
注:如果要让子shell也能找到我们程序的位置,需要将修改后的$PATH环境变量使用export
命令导出。
注:也可以将单点符(.)加入到$PATH环境变量中。指示在当前目录路径下搜索运行程序。
五、持久化环境变量
使用export
命令导出的全局环境变量,当我们退出或者系统重新启动后,修改的环境变量将会不存在。这时候,在开发或者使用系统过程中,不可能每一次都去设置一遍,这太麻烦了。所以说这时候让环境变量持久化就显得很重要了。
环境变量持久化,本质就是在启动文件中使用本文形式来设置环境变量。即将环境变量写到启动文件中。
启动文件就是当我们登入linux时启动bash shell,这时bash会在一个默认的文件中去查找命令运行,就把该文件称为启动文件。即bash在linux登入系统时,会去检查启动文件。当然启动文件有几个,对于bash如何检查启动文件取决于启动bash shell的方式,如下三种方式:
- (1)在登录时将bash作为默认登录shell
- (2)作为非登录shell的交互式shell
- (3)作为运行脚本的非交互式shell
在启动linux系统时,bash shell会作为默认的登录shell启动。这时候,bash shell将从以下几个文件中读取命令:
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
在以上文件中,/etc/profile
文件是系统上默认的bash shell主启动文件。可以将我们自己设置的命令写入该文件中。
对于其余四个文件,有的linux发行版本用到了一个或者两个文件。
当bash shell对$HOME目录下的启动文件进行查找、读取命令时,遵循一定顺序:
1、$HOME/.bash_profile
2、$HOME/.bash_login
3、$HOME/.profile
当以上顺序中的文件一个被找到则作为启动文件,将忽略剩下的文件。
注意:$HOME目录下的启动文件有些linux系统下没有,这些文件是隐藏文件,使用ls -al
命令可以查看对应目录下的隐藏文件。
注:$HOME/.bashrc文件通常通过其他的文件运行。例如当启动linux系统后,再运行bash终端,这时候将会加载$HOME/.bashrc文件。
搜索关注【嵌入式小生】wx公众号获取更多精彩内容>>>>