Shell 变量 环境变量 局部变量 详解

一、变量

变量可分为俩类:环境变量(全局变量),和普通变量(局部变量)

1 环境变量

环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环境变量和bash内置的环境变量,环境变量可以在命令行中设置和创建,用户退出命令行时这些变量值就会丢失,想要永久保存环境变量,可写在文件中

全局文件为/etc/profile,对所有用户有效;用户文件为~/.bash_bash_profile,仅对指定的用户有效

  • 用户环境变量配置:.bashrc .bash_profile
  • 全局环境变量配置:/ect/profile /etc/bashrc(推荐)/etc/profile.d

2 局部变量

普通变量也可成为局部变量,只能在创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在开发脚本程序时创建,

二、变量的查看

1 查看所有变量

set命令输出所有的变量,包括全局变量和局部变量

1  [root@king ~]# set
 2     APACHEERR=hello world
 3     BASH=/bin/bash
 4     BASH_ALIASES=()
 5     BASH_ARGC=()
 6     BASH_ARGV=()
 7     BASH_CMDS=()
 8     BASH_LINENO=()
 9     BASH_SOURCE=()
10     BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" 
11     中间和结尾省略若干代码

2 查看环境变量

env命令只显示全局变量,

1 [king@king~]$ env
2 HOSTNAME=king
3 SHELL=/bin/bash   

3 查看所有的变量,函数,整数,和已经导出的变量

declare命令输出所有的变量,函数,整数,和已经导出的变量
set -o命令显示bashShell的所有参数配置信息

三、自定义环境变量

1 暂时设定环境变量

如果想设置环境变量,就要给在给变量赋值后或在设置变量时使用export命令,export命令和declare命令的格式:

export 变量名=value
变量名=value ; export 变量名
declare - x 变量名=value

实例:定义环境变量并赋值的方法:

export NAME=qzlking
declare -x NAME=qzlking
NAME=qzlking ; exprot NAME

以上定义环境变量的方法都是暂时的,若想让环境变量永久生效,可以进行如下操作:

2 永久设定环境变量

a)用户环境变量配置

1 [root@king scripts]# ls /root/.bashrc
2 /root/.bashrc
3 [root@king scripts]# ls /root/.bash_profile
4 /root/.bash_profile

说明: 对于用户的环境变量设置,常见的是用户家目录下的.bashrc.bash_profile

b)全局环境变量的配置

常见的全局环境变量配置文件,/etc/profile;/etc/bashrc;/etc/profile.d这三个配置文件,如果想要在登陆后初始化或者显示加载的内容,只需要把脚本文件放在/etc/profile.d文件下即可(不需要加执行权限)。

在Java环境中,自定义环境变量,通常放在/etc/profile全局环境变量里,

1 export JAVA_HOME=/application/jdk
2 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
3 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
4 export RESIN_HOME=/application/resin 

四、查看/取消环境变量

我们通常在工作中要查看一下环境变量中都配置了什么,需要做什么更改,所以我们就有了ehco或printf命令来打印查看环境变量。

  • $HOME:用户登录时进入的目录
  • $UID:当前用户的uid( 也就是用户的标识,相当于人的身份证)相当于id -u
1 [king@king ~]$ echo $HOME
2 /home/king
3 [king@king ~]$ echo $UID
4 300

我们可以用unset来消除本地变量和环境变量

1 [king@king ~]$ echo $USER
2 nane
3 [king@king ~]$ unset $USER
4 [king@king ~]$ echo  $USER  #<这里输出是个空行

小结:

  • 变量名一定要大写,可以在自身的Shell及子Shell中使用,常用export来定义环境变量
  • 执行env默认可以显示所有的环境变量名称及对应的值
  • 输出时用“$变量名”,取消用“unset 变量名

五、登陆Shell读取环境变量文件的流程

环境变量初始化与对应文件的生效顺序:

在这里插入图片描述
 用户登录系统后首先会加载/etc/profile全局环境变量文件,加载完后,执行/etc/profile.d目录下的脚本文件(如:系统的字符集设置/etc/sysconfigil8n),然后再运行$HOME/.bash_profile(用户环境变量文件),在这文件里会找$HOME/.bashrc(用户环境变量文件),有就执行,没有就不执行。再$HOME/.bashrc/etc/bashrc(全局环境变量文件)有就执行,没有就不执行。如果希望用户的Shell不是登陆时启动的(如:手动敲下bash时启动或者远程ssh连接情况),非登陆Shell只会加载$HOME/.bashrc(用户环境变量文件),并会去找/etc/bashrc(全局环境变量文件)。即非登陆Shell想读到设置的环境变量,需要将变量设定等写入$HOME/.bashrc(用户环境变量文件)或etc/bashrc(全局环境变量文件)不是$HOME/.bash_profile/etc/profile

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值