1. 环境变量的概念 环境变量是用来存储shell会话和工作环境,方便shell轻松访问到设定值中的程序,环境变量分为全局变量和局部变量
2. 全局变量 全局变量在shell和它的子shell中都生效,可以通过env和printenv命令来查看当前环境变量 [root@localhost ~]# env HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.186.1 63544 22 SELINUX_USE_CURRENT_RANGE= QTDIR=/usr/lib64/qt-3.3 QTINC=/usr/lib64/qt-3.3/include SSH_TTY=/dev/pts/1
[root@localhost ~]# print env -bash: print: command not found [root@localhost ~]# printenv HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.186.1 63544 22 SELINUX_USE_CURRENT_RANGE= QTDIR=/usr/lib64/qt-3.3 QTINC=/usr/lib64/qt-3.3/include SSH_TTY=/dev/pts/1 USER=root
3. 局部变量 局部变量仅对当前shell生效,没有特定的命令可以查看,可以通过set命令可显示所有已定义的变量 变量赋值: 变量名='变量值' 变量值: 直接用字串;name='username' 变量引用;name='$username' 命令引用;name=`COMMAND`,name=$(COMMAND) 变量引用:$(name),$name "":弱引用,其中的变量引用会被替换成变量值 '':强引用,其中的变量引用不会被替换成变量值而保持原字符串 变量销毁: unset name
4. 其他类型变量 本地变量:仅对当前shell进程生效,对当前shell之外的shell和zishell都无效。 位置变量:$1;$2......来表示,用于让脚本在脚本代码中调用通过命令行传递它的参数; $1;$2......:对应调用第1、2.......参数 shift [n] $0:命令本身 $*:传递给脚本所有参数,把所有参数一个个传给脚本 $@:传递脚本给所有参数,把所有参数当成一个成体传递给脚本 $#:传递给脚本参数的个数。
5. 设置全局环境变量 变量申明、赋值: export name=VALUE declare -x name=VALUE 变量引用: $name;$(name) 显示所有环境变量: export;env;printenv 销毁: unset name 修改当前SHELL的全局环境变量可对当前shell和其子shell生效,但是对其父shell没有影响。 bash中有很多内建的环境变量:PATH;SHELL;UID;HISTSIZE;HOME;PWD;OLD;HISTFILE;PS1 只读变量: readonly name declare -r name 变量命令法则: 不能使用程序中的保留字,如if,for; 只能使用数字、字母及下划线,且不能以数字开头 见名知义
6. 设置PATH环境变量 使用echo $PATH 命令可查看当前PATH环境变量,PATH变量所有的参数通过(:)隔开,增加PATH变量可使用 PATH=$PATH:newpath,来修改。 长期生效则需要修改配置文件 BASH配置文件按照生效范围划分,可分为如下两类: 全局配置: /etc/profile/etc/profile.d/*.sh/etc/bashrc 个人配置: ~/.bash_profile~/.bashrc
按照功能可分为两类: profile类:为交互式登录的shell提供配置 全局:/etc/profile/etc/profile.d/*.sh 个人:~/bash_profile 功能:定义环境变量,运行命令或脚本 bashrc类:为非交互式的shell提供配置 全局:/etc/bashrc 个人:~/bashrc 功能:定义变量别名,定义本地变量 配置文件读取次序: 交互式登录:在终端使用用户名密码登录或在当前用户下使用su - USERNAME 和 su -l USERNAME 切换用户。 /etc/profile --> /etc/profile.d/*.sh --> ~/bash_profile --> ~/.bashrc --> /etc/bashrc 非交互式登录:使用su USERNAME切换用户或图形界面下打开的终端 ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh 7. 数组变量 数组能存储多个值,可以整体调用,也可单独待用,示例如下: 创建一个数组: [root@localhost ~]# mytest=(one two three four five six) ####数组中存储了6个值,分别对应位置编号0-5 显示数组中第二个值: [root@localhost ~]# echo ${mytest[2]} three 显示数组中所有值: [root@localhost ~]# echo ${mytest[*]} one two three four five six 销毁数组中0位对应的值: [root@localhost ~]# unset mytest[0] [root@localhost ~]# echo ${mytest[*]} two three four five six 销毁0对应的值one后,该位置仍被占用: [root@localhost ~]# echo ${mytest[0]}
[root@localhost ~]# 销毁数组: [root@localhost ~]# unset mytest [root@localhost ~]# echo ${mytest[*]}
[root@localhost ~]# (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|