一文总结linux的环境变量

一、开篇

​ 在Linux操作系统中,环境变量用于存储关于shell会话和工作环境的信息。使用环境变量我们可以获取系统信息、存储临时数据和配置信息。

在linux 的bash shell中,环境变量分为:全局环境变量局部环境变量

二、全局环境变量

​ 全局环境变量对shell会话以及生成的子shell都是可见的。

(2-1)查看全局变量

​ 使用envprintenvecho查看全局环境变量:

  • 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公众号获取更多精彩内容>>>>
请添加图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐