“变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。”举个例子,当用户上传一个值,这个值传递给程序。这个值在程序运行中被多次调用赋值。在系统做升级时,维护和调试升级就要在每次调用赋值的地方修改。这时,如果将用户上传的值定义为一个变量。系统需要赋值时,就去调用这个变量。在以后的维护升级时,只需要更改变量的值即可。
1、系统变量
Shell变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用shell变量。变量名必须以字母或下划线字符开头。其余的字符可以是字母、数字(0~9)或下划线字符。任何其他的字符都标志着变量名的终止。名字是大小写敏感的。给变量赋值时,等号周围不能有任何空白符。为了给变量赋空值,可以在等号后跟一个换行符。用set命令可以查看所有的变量,unset abc命令可以清除变量abc,abc相当于没有定义过。readonly abc可以把abc变为只读变量,定义之后不能对abc进行任何更改。对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等。
[root@server01~]#echo$SSH_TTY##查看自己在哪个TTY下面 /dev/pts/1 [root@server01~]#echo$PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@server01~]#echo$HOME /root [root@server01~]#echo$PWD /root [root@server01~]#echo$LOGNAME root [root@server01~]#env##系统常用变量 XDG_SESSION_ID=13 HOSTNAME=server01 ...... MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=zh_CN.UTF-8 SELINUX_LEVEL_REQUESTED= HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root ...... [root@server01~]#set##包括系统变量和用户自定义变量 BASH=/bin/bash ...... HISTCONTROL=ignoredups HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/root HOSTNAME=server01 HOSTTYPE=x86_64 ...... PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PIPESTATUS=([0]="0") PPID=30083 PS1='[\u@\h\W]\$' PS2='>' ...... [root@server01~]# [root@server01~]#abc=51cto.com##设置自定义的变量 [root@server01~]#set|grepabc##查询自定义变量中的abc abc=51cto.com [root@server01~]#unsetabc##取消自定义的变量 [root@server01~]#set|grepabc [root@server01~]# [root@server01~]#a='$a$b'##变量值有特殊符号时需要用单引号括起来 [root@server01~]#echo$a $a$b [root@server01~]#a='a$b' [root@server01~]#echo$a a$b [root@server01~]#c=1;d=2 [root@server01~]#echo$c$d 12 [root@server01~]#exportabc=123.com##制作一个全局的环境变量 [root@server01~]#bash [root@server01~]#echo$abc 123.com
2、环境变量
1)系统环境变量
2)用户环境变量
~/.bashrc ##自定义一些别名alias
~/.bash_profile ##自定义一些变量
~/.bash_history ##自定义历史相关配置
若要配置环境变量之类,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登陆,该文件总会被调用。
定义PS1能够改变命令提示符的格式:
[root@server01~]#echo$PS1##PS1输出左边的一个格式 [\u@\h\W]\$ [root@server01~]#PS1='[\u@\h\w]\$’##更改格式为绝对路径 [root@server01~]#cd/etc/sysconfig/network-scripts/ [root@server01/etc/sysconfig/network-scripts]#
使用#PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$'命令可以带颜色的显示。这种方式只是暂存在内存中,想要永久修改,还是需要进入/etc/bashrc修改。