Shell变量
2016-02-15 13:42
337 查看
变量是代表一些值的符号,可以通过变量来设置Shell或者其他程序,变量作用于内存中。
变量的查看
1. set可以查看所有的变量
变量的设置
1. 通过自定义变量设置
4. 通过环境变量设置
vi /etc/profile 打开文件,在文件最后添加
变量的命名
变量名和等号之间不能有空格,变量名的命名须遵循如下规则:
1) 首个字符必须为字母(a-z,A-Z)。
2) 中间不能有空格,可以使用下划线(_)。
3) 不能使用标点符号。
4) 不能使用bash里的关键字(可用help命令查看保留关键字)。
变量的使用
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
变量的类型
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
常见的环境变量
变量的查看
1. set可以查看所有的变量
[root@chen shell]# set BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu") BASH_VERSION='4.1.2(1)-release' CLASSPATH=.:/usr/local/jdk1.8.0_65/lib/dt.jar:/usr/local/jdk1.8.0_65/lib/tool.jar:/usr/local/jdk1.8.0_65/jre/lib COLORS=/etc/DIR_COLORS COLUMNS=191 CVS_RSH=ssh DIRSTACK=() ... ...2. env只能查看所有的环境变量
[root@chen shell]# env HOSTNAME=chen.morris SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.92.1 2090 22 SELINUX_USE_CURRENT_RANGE= QTDIR=/usr/lib/qt-3.3 OLDPWD=/root QTINC=/usr/lib/qt-3.3/include SSH_TTY=/dev/pts/0 JRE_HOME=/usr/local/jdk1.8.0_65/jre USER=root ... ...
变量的设置
1. 通过自定义变量设置
[root@tbtravel ~]# key1="morris" [root@tbtravel ~]# echo $key1 morris2. 通过别名设置
[root@tbtravel ~]# alias taillog='tail -f /usr/www/logs/web.log' [root@tbtravel ~]# alias | grep taillog alias taillog='tail -f /usr/www/logs/web.log'3. 通过set指令设置
4. 通过环境变量设置
vi /etc/profile 打开文件,在文件最后添加
export JAVA_HOME=/usr/local/jdk1.8.0_65 export JRE_HOME=/usr/local/jdk1.8.0_65/jre export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$JRE_HOME/libsource /etc/profile 重新执行刚修改的初始或文件
变量的命名
变量名和等号之间不能有空格,变量名的命名须遵循如下规则:
1) 首个字符必须为字母(a-z,A-Z)。
2) 中间不能有空格,可以使用下划线(_)。
3) 不能使用标点符号。
4) 不能使用bash里的关键字(可用help命令查看保留关键字)。
变量的使用
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
[root@tbtravel ~]# echo $key1 morris [root@tbtravel ~]# echo ${key1} morris重新定义变量与定义变量一样,如果变量存在则会自动覆盖。
[root@tbtravel ~]# key1="java" [root@tbtravel ~]# echo $key1 java使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,当尝试改变只读变量的值时会报错。
[root@tbtravel ~]# readonly key1="morris" [root@tbtravel ~]# echo $key1 morris [root@tbtravel ~]# key1="java" -bash: key1: readonly variable使用unset删除变量,但是不能删除只读变量
[root@tbtravel ~]# key2="morris" [root@tbtravel ~]# echo $key2 morris [root@tbtravel ~]# unset key2 [root@tbtravel ~]# echo $key2 [root@tbtravel ~]# unset key1 -bash: unset: key1: cannot unset: readonly variable
变量的类型
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
常见的环境变量
环境变量 | 含义 |
PATH | 指定命令的搜索路径 |
HISTSIZE | 保存历史命令记录的条数 |
LOGNAME | 当前用户的登录名 |
HOSTNAME | 主机的名称 |
SHELL | 当前用户用的是哪种Shell |
LANG/LANGUGE | 和语言相关的环境变量,使用多种语言的用户可以修改此环境变量 |
相关文章推荐
- 第一个Shell脚本
- Shell简介
- shell脚本之sed使用----替换、变量、转义字符
- adb shell 不支持Ctrl + C, TAB, DOWN/UP 等按键问题解决方案
- Linux ssh -bash: ulimit: 问题解决
- Linux运维初级教程(四)shell简介
- 小总结小展望
- ubuntu 开始ssh服务 使用xshell工具连接
- Shell expr的用法
- 使用DDMS查看安卓程序本地文件的内容
- shell升级完整记录
- shell升级
- LinuxShell Chapter1
- Linux shell编程中IO和条件及循环处理的细节问题讨论
- Linux系统中bash shell编程的10个基础问题讲解
- linux实战(三)----执行shell脚本----详细步骤讲解
- linux实战(三)----执行shell脚本----详细步骤讲解
- Use the Get-Command PowerShell Cmdlet to Find Parameter Set Information
- 开机自启动Powershell脚本
- Powershell 音乐播放