Linux环境变量
全局变量(全部大写字母表示)对shell会话和所有生成的子shell可见。局部变量(用小写字母和下划线分隔)只对创建它们的shell可见。环境变量在使用时添加$符号,而在改变值时直接调用。
查看环境变量:set返回所有环境变量,printenv/env只返回全局变量
- echo $HOME
- printenv $HOME
可以直接通过 myvalue=1 来定义用户局部变量(注意 = 两边一定不能有空格,不然shell将其作为命令理解),并通过export将其扩展为全局变量。这样父shell中的改变将能够同步到子shell中,但子shell中的改变并不能同步到父shell中,不过可以通过在子shell中使用export来同步回父shell。同时,可以使用unset来删除某个环境变量。
shell环境变量的默认加载过程
加载文件- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
登录shell:只要登录Linux系统,bash就会执行/etc/profile中的命令。而/etc/profile又将遍历/etc/profile.d目录中的所有文件,并加载其中的环境变量。之后将在对应用户目录下依次查询除 $HOME.bashrc 之外的文件,只要找到一个之后的将被忽略。同时, $HOME.bashrc 中通常将检查是否存在 $HOME.bashrc 文件,如果存在会先执行其中的内容。
交互式shell:通过bash启动的shell。此时系统将只检查 $HOME/.bashrc 文件。
非交互式shell:系统执行shell脚本使用的shell。此时将检查BASH_ENV变量来查看要执行的启动文件。
环境变量的持久化(如何永久的保留定义的环境变量):通常将需要添加的环境变量通过在/etc/profile.d目录中创建一个以.sh结尾的文件或存储在$HOME/.bashrc文件中。
- export PATH="$PATH:." #将当前目录添加到搜索可执行文件路径
- export TERM=xterm #启动xterm颜色标示
数组变量通过数组的形式来存储变量,并通过${mytest[2]}来引用对应位置的变量值。