继续创造,加快成长!这是我参与「日新方案 10 月更文挑战」的第30天,点击检查活动详情
嵌入式 Linux 入门第七课,学习了解 linux 的环境变量 ......矜辰所造成的
前语
学习完 Linux 的 Shell 指令 和 Shell 脚本,咱们还需求了解一个东西 :环境变量,了解了 Linux 的环境变量,前面的文章中有些细节的东西,在本文能够得到阐明和表现。
我是矜辰所造成的,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学常识的咱们,矜辰所造成的,金石为开!
一、什么是环境变量
环境变量是在操作体系中一个具有特定姓名的目标,它包含了一个或许多个应用程序所将运用到的信息,操作体系工作环境的一些设置选项或属性参数。
环境变量相当于给体系或用户应用程序设置的一些参数。
作为嵌入式开发人员,多少都会触摸过环境变量,在咱们常用的 windows 体系中,设置环境变量的方法如下:
即便知道 windows 下的环境变量设置方法,也有大多数朋友并不知道环境变量的真实意义,许多时分咱们仅仅依据某个教程按照过程设置罢了,并没有深化的去考虑。
比方上图中的 Path,是告知体系,当要求体系运转一个程序而没有告知它程序所在的完整途径时,体系除了在当时目录下面寻找此程序外,还应到path中指定的途径去找。
在上面的 Path 中有一个 gcc 相关的环境变量,在 windows 体系中是不自带 gcc 编译器的,所以咱们需求运用 gcc 编辑器需求把其增加到环境变量,才能够运用 gcc 程序对应的一系列指令:
还是由于 windows 下大多是图形化界面操作,并且许多 IDE 会在安装的时分主动帮咱们装备好环境变量,所以关于环境变量的了解要求呀不需求那么多。可是现在咱们学习 Linux ,一切的东西都是文件,都是运用 Shell 指令履行,所以学习知道 Linux 下的环境变量,能让咱们更好的了解环境变量,也是咱们学习 Linux 有必要要了解的常识点。
二、Linux 环境变量简介
在咱们的上一篇文章,阐明 Shell 脚本编程变量的时分提到过环境变量:
Linux 下的环境变量是 Shell 变量的一种,Linux 环境变量也可称之为 Shell 环境量变。
为什么呢 ?简略了解一下,在 Linux 中,由于一切程序操作都能够运用 Shell 指令完结,而环境变量便是给体系或应用程序设置的一些参数。
按照上图的说法,咱们在 Shell 脚本中,暂时运用=
界说的变量就做局部变量,比方 a=123
,这个a
便是局部变量,而环境变量呢?是在 shell 启动的时分就现已界说好了的,这个咱们在下面会有阐明。
2.1 环境变量分类
按变量的 生计周期 来划分:
- 永久环境变量:在环境变量脚本文件中装备,变量永久收效,用户每次登录时会主动履行这些脚本。
- 暂时环境变量:在 Shell 中暂时界说的,运用
export
指令声明,变量在封闭 shell 时失效。
按变量的 收效规模 来划分:
- 体系环境变量:公共的,对悉数的用户都收效。
- 用户环境变量:用户私有的,只对该用户收效。
上面阐明的划分方法,以及阐明,我都会在下文示例得到表现。
2.2 检查环境变量
env 指令
env
指令: 检查 当时用户 悉数的环境变量。
上图是 env
指令结果的结束部分,其中上面还有许多。
额定提一下,有没有发现上面的环境变量的姓名都是大写,环境变量的赋值句子便是咱们学过的 Shell 脚本编程的变量界说句子,运用变量名=
赋值。
export 指令
export
指令: 用来显示和设置环境变量 ,不加参数直接输入会显示当时 导出成用户变量 的 shell 变量。
这儿就有一个问题阐明,怎么了解这个 导出成用户变量 的 shell变量 ?
每个 shell 有自己特有的变量,这个和用户变量是不同的,当时用户变量和你用什么 shell 无关,不论你用什么shell都在,比方 HOME,SHELL 等这些变量,能够了解为上面所说的环境变量。
shell 自己的变量能够了解为 shell 的局部变量,在脚本或许命名中界说,换一个 shell 就不相同了。
一个 shell 自己的变量能够经过export
“导出”变成一个用户变量,咱们来看一下一个示例阐明:
在上图中,咱们直接在当时 Shell 中新建了一个变量,然后只需这个 Shell 不关,这个变量就一直能够调用,没想到这也能够把? 便是这么奇特!
上图中说到了 Shell 子进程的内容,这儿咱们温习一个常识点,在文章 《嵌入式 Linux 入门(五、Shell 脚本编程上:知道 Shell 脚本) 》中的 “2.2 Shell 脚本的启动方法” 咱们提到过 Shell 的 3 种启动方法,文中提到过 3 种启动方法,其中有 2 种方法运转脚本会开启子进程:
详细的了解咱们来看一个示例:
echo 指令
echo
指令咱们在以前文章就介绍过,能够把终端的变量内容打印出来。
运用指令检查变量一会儿看太多了,咱们一般都是依据自己的需求检查对应的环境变量,比方在文章《 嵌入式 Linux 入门(五、Shell 脚本编程上:知道 Shell 脚本) 》中的 “1.3 Shell 指令的实质” 小结咱们检查了一个 PATH 的环境变量:
这个 PATH 环境变量意思是:可履行程序的查找目录,可履行程序包含 Linux 体系指令和用户的应用程序。
当然,咱们还能够检查许多其他的环境变量,比方:
如上图所说,咱们运用 echo
打印出的环境变量,其实便是 Shell 脚本编程的基础语法,只运用一个指令 echo
把变量打印出来罢了,并不是有些人所认为的Linux 下怎么这么复杂,打印都这么多“指令”。
一些常用的环境变量:
PATH :可履行程序的查找目录,决定了shell 将到哪些目录中寻找指令或程序
HOME :当时用户主目录USER :当时登录用户的用户名
HISTSIZE :保存前史指令的数目
LOGNAME :当时用户的登录名
HOSTNAME :指主机的名称
SHELL :当时用户 Shell 解析器
LANG :Linux体系的言语、区域、字符集
LANGUGE :言语相关的环境变量,多言语能够修改此环境变量
2.3 做个简略小结
我结合了太多的地方阐明,然后加上自己的了解总结,不同的教程对变量的准确界说还不完全相同,最终还是发现上面的一些变量的阐明有点绕,假如有觉得不当的地方请大佬们指出  ̄□ ̄|| 。
其实上面概念有点区分不清楚也问题不大,记住一点,环境变量也是个变量,不同的变量关键在于,运用不同的 Shell 或许 不同的用户,能不能够运用这些变量,这是咱们在今后需求注意的问题。
咱们在下文会介绍,怎么设置环境变量,使得其对一切用户有用,或许只对某个用户有用。
咱们下面会讲一下怎么设置环境变量的一些方法。
三、设置环境变量
在上面咱们介绍 export
指令的时分,咱们运用 export
指令把 Shell 变量变成了用户变量,使得在同一个终端中的一切 shell 都能够打印变量,可是,咱们假如从头翻开一个终端,变量又变成了无法辨认:
咱们运用 export
指令界说的变量只对当时 shell 有用果,上面咱们翻开一个新的终端, 变量就无法辨认了,假如封闭终端,从头翻开,变量也会消失,这种变量是暂时的,那么假如想要一个变量,新开的终端或许从头启动 Shell 都能辨认,有什么方法吗?
当然有,那便是修改 Shell 装备文件,把变量设置成永久的环境变量。
所以再次阐明一下,上面环境变量的理论假如有点稀里糊涂问题也不大,等今后熟悉了自然会越来越了解,前面的铺垫仅仅为了引出本文的要点:
本文的要点 ☆ 怎么设置 对一切用户永久收效的 和 对单用户永久收效 的变量 ☆ 。
3.1 Linux 环境变量文件
在 Linux 中,与环境变量有关的文件如下:
/etc/profile
在咱们运用的 Ubuntu 体系中,咱们找到 /etc/profile
文件来看看:
~/.profile
同样的,检查一下用户目录下的~/.profile
文件:
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 悉数用户
经过上文咱们提到的环境变量装备文件,咱们要增加 针对悉数用户有用果的 环境变量,能够从大局装备的文件入手:
这儿我感觉上面的图我现已讲得很详细了,这儿举个简略比如阐明,咱们运用上图说的第二种方法:
上面咱们经过 /ect/bash.bashrc
文件界说了一个新的变量 testvar
,咱们从头翻开终端,就能够运用这个变量,如下图:
经过上面方法增加的环境变量,是针对一切用户,一切进程都同享的 永久的 环境变量。
至于详细运用过程中,运用哪种方法界说悉数用户的环境变量,依据自己的需求,可是总的来说,在/etc/profile.d
目录下面增加脚本是 Linux 比较引荐的一种方法,也便是上面我说的第三种方法,由于便于管理,并且能够区分不同的类型,不同的应用的环境变量。
3.2.2 单个用户
有了上面的阐明,对单个用户永久收效的 环境变量就好了解了,针对咱们运用的 Ubuntu 体系,有2种方法增加永久收效的单个用户环境变量。
这个的测验简略就不上图了,直接修改文件,然后从头翻开新的 Shell 终端,能够运用变量,可是切换到另外一个用户,就无法打印。
结语
经过本文的学习,咱们对 Linux 下的环境变量有了一个全面的知道,并且经过对环境变量的学习,对咱们了解 Shell 的运转有了更深一层的知道。
在我运用的虚拟机 Ubuntu 上的 Shell 脚本履行次序为:
/etc/profile
—>/etc/bashrc
—>/etc/profile.d
—>~/.profile
—>~/.bashrc
本文的要点在于学会增加设置 对一切用户永久收效的 和 对单用户永久收效 的环境变量。
内容不算多,可是也需求好好了解,期望看完我们都能有所收成!ヾ(◍∇◍)ノ゙ !
本文就到这儿,谢谢我们!