Linux --- 环境变量

bash shell 环境变量的特性是用来存储有关 shell 会话和工作环境的信息。分为:①全局变量 ②局部变量

全局环境变量:Linux系统在用户开始 bash 会话时就设置了一些全局环境变量,对于 shell 会话和所有生成的子 shell 都是可见的,局部变量则只对创建它们的 shell 可见。(系统环境变量基本上都是使用全大写字母,以区别于普通用户的环境变量。)

使用 env 或 print env 命令查看全局变量:

要显示个别环境变量的值,可以使用 printenv 命令:(而不要用 env 命令)

除了用 printenv 命令查看环境变量,还可以使用 echo 显示环境变量的值,在引用环境变量的时候,必须在变量前面加上一个美元符($):

全局环境变量可用于进程的所有子 shell ,用 bash 命令生成一个子 shell 后,显示了 HOME 环境变量的当前值,这个值和父 shell 中的一样,都是 root:

局部环境变量:只能在定义它们的进程中可见,Linux系统中并没有一个只显示局部环境变量的命令,set 命令会显示为某个特定进程设置的所有环境变量,包括局部环境变量,全局变量以及用户定义变量:

env 、printenv 命令和 set 之间的差异:①set 命令会显示出全局变量、局部变量以及用户定义变量,并且会按照字母顺序进行排序,而 env 和 printenv 命令不会对变量排序,也不会输出局部变量和用户定义变量 。

设置用户定义变量:可以在 bash shell 中直接设置自己的变量,启动 bash shell 就能创建在这个 shell 进程内可见的局部变量了,可以通过等号给环境变量赋值:(值可以是数值或字符串)

变量名、等号和值之间没有空格,如果在赋值表达式中加上了空格, bash shell 就会把值当成一个单独的命令。

设置了局部环境变量后就能在 shell 进程的任何地方使用它了,但是它在子shell中就不可用!通过命令 echo $my_variable 所返回的空行就能够证明这一点,当你退出子 shell 进程并回到原来的 shell 时,这个局部环境依然可以使用。

设置全局环境变量:在创建的子进程中全局环境变量是可见的,创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。这个过程通过 export 命令来完成,变量名前面不需要加 $:

定义并导出全局环境变量 my_variable 后,bash 命令启动了一个子 shell ,在这个子 shell 中能够正确的显示出变量my_variable的值,该变量能够保留住它的值是因为 export 命令使其变成了全局环境变量。而修改子 shell 中全局环境变量并不会影响到父 shell 中该变量的值:

在启动子 shell 确定能够显示全局环境变量 my_variable 的值,再将子 shell 中的变量值改变后,并不会影响父 shell 中环境变量的值 。

删除环境变量:用 unset 命令来删除环境变量(在 unset 命令中引用环境变量时,记住不要使用 $)

如果在子 shell 中删除了全局变量,这只对子进程有效,在父 shell 中该全局环境变量依然可用:

默认的shell环境变量:

设置PATH环境变量:PATH 中各个目录之间是用冒号分隔的,只需引用原来的 PATH 值,然后再给这个字符串添加新目录就行了。

定位系统环境变量:在你登录Linux系统启动 bash shell 时,默认情况下 bash 会在启动文件或环境文件中查找命令,bash 检查的启动文件取决于你启动 bash shell 的方式,启动 bash shell 有3种方式:

 ①登录时作为默认登录 shell  :/etc/profile 默认的主启动文件。只要用户登录Linux系统,bash 就会执行 /etc/profile 启动文件中的命令。

$HOME 目录下的启动文件:提供一个用户专属的启动文件来定义该用户所用到的环境变量:

 ②作为非登录 shell 的交互式 shell :(就是你的bash shell 是在命令提示符下输入bash时启动)如果bash是作为交互式shell启动时,它就不会访问 /etc/profile 文件,只会检查用户HOME目录中的 .bashrc 文件。

.bashrc 文件有2个作用:① 查看 /etc 目录下通用的 bashrc 文件 ② 为用户提供一个定制自己的命令别名和私有脚本函数的地方

③作为运行脚本的非交互式 shell :系统执行 shell 脚本时用的就是这种非交互式shell,不同点在于它没有命令行提示符:

默认情况下变量 BASH_ENV 并未设置,echo命令会显示空行,printenv 命令只会返回 CLI 提示符。

环境变量持久化:对全局环境变量来说,Linux系统中所有用户需要或更改过的变量设置放在 /etc/profile文件中,如果升级了系统的发行版本那么该文件也会跟着更新,那你所有定制过的变量设置就都没有了,最好在 /etc/profile.d 目录中创建一个以 .sh 结尾的文件,把所有新的或修改过的全局变量设置放在这个文件中。存储个人用户永久性 bash shell 变量的地方是 $HOME/.bashrc 文件,这一点适用于所有类型的 shell进程。

数组变量:环境变量有一个特性就是可以作为数组来使用,数组是能够存储多个值的变量,这个值可以单独引用,也可以作为整个数组来引用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值