继续创造,加快成长!这是我参与「日新方案 10 月更文挑战」的第30天,点击检查活动详情

嵌入式 Linux 入门第七课,学习了解 linux 的环境变量  ......矜辰所造成的

前语

学习完 Linux 的 Shell 指令 和 Shell 脚本,咱们还需求了解一个东西 :环境变量,了解了 Linux 的环境变量,前面的文章中有些细节的东西,在本文能够得到阐明和表现。

我是矜辰所造成的,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学常识的咱们,矜辰所造成的,金石为开!

一、什么是环境变量

环境变量是在操作体系中一个具有特定姓名的目标,它包含了一个或许多个应用程序所将运用到的信息,操作体系工作环境的一些设置选项或属性参数。

环境变量相当于给体系或用户应用程序设置的一些参数。

作为嵌入式开发人员,多少都会触摸过环境变量,在咱们常用的 windows 体系中,设置环境变量的方法如下:

一篇文章带你吃透 Linux 下的环境变量

即便知道 windows 下的环境变量设置方法,也有大多数朋友并不知道环境变量的真实意义,许多时分咱们仅仅依据某个教程按照过程设置罢了,并没有深化的去考虑。

比方上图中的 Path,是告知体系,当要求体系运转一个程序而没有告知它程序所在的完整途径时,体系除了在当时目录下面寻找此程序外,还应到path中指定的途径去找。

在上面的 Path 中有一个 gcc 相关的环境变量,在 windows 体系中是不自带 gcc 编译器的,所以咱们需求运用 gcc 编辑器需求把其增加到环境变量,才能够运用 gcc 程序对应的一系列指令:

一篇文章带你吃透 Linux 下的环境变量

还是由于 windows 下大多是图形化界面操作,并且许多 IDE 会在安装的时分主动帮咱们装备好环境变量,所以关于环境变量的了解要求呀不需求那么多。可是现在咱们学习 Linux ,一切的东西都是文件,都是运用 Shell 指令履行,所以学习知道 Linux 下的环境变量,能让咱们更好的了解环境变量,也是咱们学习 Linux 有必要要了解的常识点。

二、Linux 环境变量简介

在咱们的上一篇文章,阐明 Shell 脚本编程变量的时分提到过环境变量:

一篇文章带你吃透 Linux 下的环境变量

Linux 下的环境变量是 Shell 变量的一种,Linux 环境变量也可称之为 Shell 环境量变。

为什么呢 ?简略了解一下,在 Linux 中,由于一切程序操作都能够运用 Shell 指令完结,而环境变量便是给体系或应用程序设置的一些参数。

按照上图的说法,咱们在 Shell 脚本中,暂时运用=界说的变量就做局部变量,比方 a=123,这个a便是局部变量,而环境变量呢?是在 shell 启动的时分就现已界说好了的,这个咱们在下面会有阐明。

2.1 环境变量分类

按变量的 生计周期 来划分:

  • 永久环境变量:在环境变量脚本文件中装备,变量永久收效,用户每次登录时会主动履行这些脚本。
  • 暂时环境变量:在 Shell 中暂时界说的,运用 export 指令声明,变量在封闭 shell 时失效。

按变量的 收效规模 来划分:

  • 体系环境变量:公共的,对悉数的用户都收效。
  • 用户环境变量:用户私有的,只对该用户收效。

上面阐明的划分方法,以及阐明,我都会在下文示例得到表现。

2.2 检查环境变量

env 指令

env 指令: 检查 当时用户 悉数的环境变量。

一篇文章带你吃透 Linux 下的环境变量

上图是 env 指令结果的结束部分,其中上面还有许多。

额定提一下,有没有发现上面的环境变量的姓名都是大写,环境变量的赋值句子便是咱们学过的 Shell 脚本编程的变量界说句子,运用变量名=赋值。

export 指令

export 指令: 用来显示和设置环境变量 ,不加参数直接输入会显示当时 导出成用户变量 的 shell 变量。

一篇文章带你吃透 Linux 下的环境变量

这儿就有一个问题阐明,怎么了解这个 导出成用户变量 的 shell变量 ?

每个 shell 有自己特有的变量,这个和用户变量是不同的,当时用户变量和你用什么 shell 无关,不论你用什么shell都在,比方 HOME,SHELL 等这些变量,能够了解为上面所说的环境变量。

shell 自己的变量能够了解为 shell 的局部变量,在脚本或许命名中界说,换一个 shell 就不相同了。

一个 shell 自己的变量能够经过export “导出”变成一个用户变量,咱们来看一下一个示例阐明:

一篇文章带你吃透 Linux 下的环境变量

在上图中,咱们直接在当时 Shell 中新建了一个变量,然后只需这个 Shell 不关,这个变量就一直能够调用,没想到这也能够把? 便是这么奇特!

上图中说到了 Shell 子进程的内容,这儿咱们温习一个常识点,在文章 《嵌入式 Linux 入门(五、Shell 脚本编程上:知道 Shell 脚本) 》中的 “2.2 Shell 脚本的启动方法” 咱们提到过 Shell 的 3 种启动方法,文中提到过 3 种启动方法,其中有 2 种方法运转脚本会开启子进程:

一篇文章带你吃透 Linux 下的环境变量

详细的了解咱们来看一个示例:

一篇文章带你吃透 Linux 下的环境变量

echo 指令

echo 指令咱们在以前文章就介绍过,能够把终端的变量内容打印出来。

运用指令检查变量一会儿看太多了,咱们一般都是依据自己的需求检查对应的环境变量,比方在文章《 嵌入式 Linux 入门(五、Shell 脚本编程上:知道 Shell 脚本) 》中的 “1.3 Shell 指令的实质” 小结咱们检查了一个 PATH 的环境变量:

一篇文章带你吃透 Linux 下的环境变量

这个 PATH 环境变量意思是:可履行程序的查找目录,可履行程序包含 Linux 体系指令和用户的应用程序。

当然,咱们还能够检查许多其他的环境变量,比方:

一篇文章带你吃透 Linux 下的环境变量

如上图所说,咱们运用 echo 打印出的环境变量,其实便是 Shell 脚本编程的基础语法,只运用一个指令 echo 把变量打印出来罢了,并不是有些人所认为的Linux 下怎么这么复杂,打印都这么多“指令”。

一些常用的环境变量:

PATH :可履行程序的查找目录,决定了shell 将到哪些目录中寻找指令或程序

HOME :当时用户主目录USER :当时登录用户的用户名

HISTSIZE  :保存前史指令的数目

LOGNAME :当时用户的登录名

HOSTNAME :指主机的名称

SHELL :当时用户 Shell 解析器

LANG :Linux体系的言语、区域、字符

LANGUGE  :言语相关的环境变量,多言语能够修改此环境变量

2.3 做个简略小结

我结合了太多的地方阐明,然后加上自己的了解总结,不同的教程对变量的准确界说还不完全相同,最终还是发现上面的一些变量的阐明有点绕,假如有觉得不当的地方请大佬们指出  ̄□ ̄|| 。

其实上面概念有点区分不清楚也问题不大,记住一点,环境变量也是个变量,不同的变量关键在于,运用不同的 Shell 或许 不同的用户,能不能够运用这些变量,这是咱们在今后需求注意的问题。

咱们在下文会介绍,怎么设置环境变量,使得其对一切用户有用,或许只对某个用户有用。

咱们下面会讲一下怎么设置环境变量的一些方法。

三、设置环境变量

在上面咱们介绍 export 指令的时分,咱们运用 export 指令把 Shell 变量变成了用户变量,使得在同一个终端中的一切 shell 都能够打印变量,可是,咱们假如从头翻开一个终端,变量又变成了无法辨认:

一篇文章带你吃透 Linux 下的环境变量

咱们运用 export 指令界说的变量只对当时 shell 有用果,上面咱们翻开一个新的终端, 变量就无法辨认了,假如封闭终端,从头翻开,变量也会消失,这种变量是暂时的,那么假如想要一个变量,新开的终端或许从头启动 Shell 都能辨认,有什么方法吗?

当然有,那便是修改 Shell 装备文件,把变量设置成永久的环境变量。

所以再次阐明一下,上面环境变量的理论假如有点稀里糊涂问题也不大,等今后熟悉了自然会越来越了解,前面的铺垫仅仅为了引出本文的要点:

本文的要点 ☆ 怎么设置 对一切用户永久收效的 和 对单用户永久收效 的变量 ☆ 。

3.1 Linux 环境变量文件

在 Linux 中,与环境变量有关的文件如下:

一篇文章带你吃透 Linux 下的环境变量
一篇文章带你吃透 Linux 下的环境变量

/etc/profile

在咱们运用的 Ubuntu 体系中,咱们找到 /etc/profile 文件来看看:

一篇文章带你吃透 Linux 下的环境变量

一篇文章带你吃透 Linux 下的环境变量

~/.profile

同样的,检查一下用户目录下的~/.profile文件:

一篇文章带你吃透 Linux 下的环境变量

shell 履行次序

依据不同的登录形式,Shell 的履行次序也有一定的区别,一般情况如下:

(1) 图形形式登录:/etc/profile —>~/.profile

(2) 图形形式登录后,翻开终端时,读取次序:/etc/bash.bashrc—>~/.bashrc

(3) 文本形式登录时:/etc/bash.bashrc—>/etc/profile—>~/.bash_profile

凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile

结合咱们上面的文件程序,咱们能够得出来,在我运用的虚拟机 Ubuntu 上的 Shell 脚本履行次序为:

/etc/profile—>/etc/bashrc—>/etc/profile.d—>~/.profile—>~/.bashrc

3.2 ☆增加环境变量☆

前面咱们讲过了运用 export 指令能够暂时的增加一个环境变量,可是也只能在当时终端的 Shell 下面有用果,咱们现在来阐明一下,增加悉数用户,永久有用的环境变量。

3.2.1 悉数用户

经过上文咱们提到的环境变量装备文件,咱们要增加 针对悉数用户有用果的 环境变量,能够从大局装备的文件入手:

一篇文章带你吃透 Linux 下的环境变量

这儿我感觉上面的图我现已讲得很详细了,这儿举个简略比如阐明,咱们运用上图说的第二种方法:

一篇文章带你吃透 Linux 下的环境变量

上面咱们经过 /ect/bash.bashrc 文件界说了一个新的变量 testvar,咱们从头翻开终端,就能够运用这个变量,如下图:

一篇文章带你吃透 Linux 下的环境变量

经过上面方法增加的环境变量,是针对一切用户,一切进程都同享的 永久的 环境变量。

至于详细运用过程中,运用哪种方法界说悉数用户的环境变量,依据自己的需求,可是总的来说,在/etc/profile.d目录下面增加脚本是 Linux 比较引荐的一种方法,也便是上面我说的第三种方法,由于便于管理,并且能够区分不同的类型,不同的应用的环境变量。

3.2.2 单个用户

有了上面的阐明,对单个用户永久收效的 环境变量就好了解了,针对咱们运用的 Ubuntu 体系,有2种方法增加永久收效的单个用户环境变量。

一篇文章带你吃透 Linux 下的环境变量

这个的测验简略就不上图了,直接修改文件,然后从头翻开新的 Shell 终端,能够运用变量,可是切换到另外一个用户,就无法打印。

结语

经过本文的学习,咱们对 Linux 下的环境变量有了一个全面的知道,并且经过对环境变量的学习,对咱们了解 Shell 的运转有了更深一层的知道。

在我运用的虚拟机 Ubuntu 上的 Shell 脚本履行次序为:

/etc/profile—>/etc/bashrc—>/etc/profile.d—>~/.profile—>~/.bashrc

本文的要点在于学会增加设置 对一切用户永久收效的 和 对单用户永久收效 的环境变量。

内容不算多,可是也需求好好了解,期望看完我们都能有所收成!ヾ(◍∇◍)ノ゙ !

本文就到这儿,谢谢我们!