Linux环境变量

2022-06-28  本文已影响0人  涅小黑

环境变量是一些已经赋了值的变量,在bash shell中,环境变量分为两类:
* 全局变量
* 局部变量

查看变量

set

set命令会显示出全局变量、局部变量以及用户定义变量。

env

[root@zzz ~]# env
XDG_SESSION_ID=18849
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/2
USER=root
_=/usr/bin/env
...

printenv

[root@zzz ~]# printenv
XDG_SESSION_ID=18849
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/2
USER=root
_=/usr/bin/env
...

[root@zzz ~]# printenv USER
root

printenv与env一样,printenv多了可以显示单个变量的功能

设置变量

局部变量

#变量名、等号和值之间没有空格
 my_variable=Hello
 echo $my_variable
#Hello

全局变量

 my_variable="I am Global now"
 export my_variable
 echo $my_variable
#I am Global now

可见性

全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的
shell可见。

[root@zzz ~]# var1=5
[root@zzz ~]# echo $var1
5
[root@zzz ~]# bash
[root@zzz ~]# echo $var1

[root@zzz ~]

全局环境变量修改只对当前shell有效

[root@zzz ~]# printenv GOROOT
/usr/local/go1
[root@zzz ~]# GOROOT=/usr/local/go
[root@zzz ~]# printenv GOROOT
/usr/local/go
[root@zzz ~]# GOROOT=/usr/local/go1
[root@zzz ~]# printenv GOROOT
/usr/local/go1
[root@zzz ~]# bash
[root@zzz ~]# printenv GOROOT
/usr/local/go

删除变量unset

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

[root@zzz ~]# globle_var=5
[root@zzz ~]# export globle_var
[root@zzz ~]# echo $globle_var
5
[root@zzz ~]# bash
[root@zzz ~]# echo $globle_var
5
[root@zzz ~]# unset globle_var
[root@zzz ~]# echo $globle_var

[root@zzz ~]# exit
exit
[root@zzz ~]# echo $globle_var
5

系统环境变量初始化

Linux系统中有很多默认环境变量,我们需要了解变量的加载过程。
启动bash shell有3种方式:

登录 shell

登录shell会从5个不同的启动文件里读取命令:

交互式 shell 进程

如果bash是作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录
中的.bashrc文件。

非交互式 shell

bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进
程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件,shell会执行该文件
里的命令,这通常包括shell脚本变量设置

上一篇 下一篇

猜你喜欢

热点阅读