Linux环境变量

2022-01-22 13:17

Linux里面变量是以key=value1:value2...的形式所存储的,它用来存储一些关于系统或者应用软件的配置信息,你也可以用它来存储密码防止不小心将密码上传到Github。在Linux中变量分为shell变量和环境变量,shell变量只在当前的shell实例中有效在其他地方无法访问,环境变量在全局有效并会被shell所继承。

1. Shell变量

shell与其他的程序语言一样都存在变量, 这个变量只在当前的shell实例上面可用,比如先通过ssh连接上了一台服务器然后设置了一个shell变量,然后断开当前ssh连接后再次重连之前设置的那个变量就不可用了。

1.1 shell变量的创建

定义一个变量的方法是通过等号赋值的方式进行定义

my_value="dddd"

不过需要注意的是在等号的两边不要有空格,否则Linux就会将前面的变量名当作一个命令然后出现command not found, 在定义这个变量之后可以通过${name}的形式来访问这个变量名,以上面my_value变量为例可以通过echo命令来输出变量的值echo ${my_value}

1.2 shell变量的删除

shell变量和环境变量可以通过unset命令来删除,比如删除我们之前所设置的my_value就可以通过这行命令

unset my_value

既然有unset命令当然也有set命令,set命令如果后面什么都不接将会输出所有的变量值,包括环境变量与shell变量,如果后面接上多个值,那些值将会作为环境变量的值其所对应的key默认是\(N\)\(N\)为一个整数并且逐渐递增

>> set a b c
>> echo ${0}
a
>> echo ${1}
b
>> echo ${2}
c

2. 环境变量

环境变量是Linux系统中非常重要的一部分,系统和某些应用程序的配置都是写在环境变量中,比如环境变量中的路径变量(PATH)是当年输入一个命令的时候系统搜索命令所对应的可执行文件的路径,如果找不着就会返回command not found

2.1 环境变量的创建

环境变量的创建命令是export, 比如使用export value="ghj"就创建了一个键为value,值为ghj的环境变量,同shell变量一样可以通过echo命令查询,也可以通过printenv查询,当printenv后面没有参数的时候则输出所有的环境变脸,如果后面接上参数则只输出相应的环境变量值,比如可以使用printenv value来查询刚才所设置的环境变量的值。环境变量的删除也是和之前的shell 变量一种,使用unset命令。

2.2 持久化环境变量

在shell中使用export命令创建的环境变量同之前的shell 变量一样,只在当前shell实例中有效,如何持久化环境变量呢?那就是将环境变量写入配置文件中,有三个配置文件可以用来持久化环境变量

  1. /etc/environment

    用于设置系统范围的环境变量,环境变量的写入格式为

    Foo=bar
    Test="test"
  2. /etc/profile

    当有用户登入shell这个文件里面的内容将会被执行,所以可以使用export命令在该文件中写入环境变量

    export Foo=bar
    export Test="test"
  3. ~/.bashrc

    家目录的.bashrc文件是当该用户登入执行的文件,和/etc/profile类似,不同是的/etc/profile是任何用户登入都会执行。如果使用的shell是zsh所对应的配置文件则为.zshrc,其他的shell也类似。

如果不想退出当前shell再重新进入可以使用source命令直接刷新,比如source /etc/profile就是执行/etc/profile文件。