变量设置规则:
1、 变量与变量的内容以等号“=”连接;
2、 等号两边不能够直接接空格符;
3、 变量名称只能是英文字母与数字,但数字不能是开头字符;
4、 若有空格符,可以使用双引号或单引号将变量内容结合起来,但要特别注意,双引号内的特殊字符可以保持变量特性,但单引号内的特殊字符则仅为一般字符;
5、 必要时需要以转义字符“”将特殊字符变成一般字符;
6、 在一串命令中,还需要通过其他命令提供的信息,可以使用这样的方式“command
”(请特别注意,是键盘上方的数字键1左边的那个按键,而不是单引号。其外,这个符号之内的命令会先执行,其执行出来的结果将作为外部输入信息。(例:ls –l
locate crontab` 先locate文件名数据,再用ls命令处理))。
7、 若变量为扩展变量内容,需以双引号及$变量名称,如“”$PATH”:/home”继续累加内容;
8、 若该变量需要在其他子程序中执行,则需要用export使变量变成环境变量(变量分为local变量和env变量,只有env变量才具有遗传性,但是子进程中的无论是local还是env都会随着子程序的消失而消失,而且父进程是无法使用其变量的);
9、 通常大写字母为系统默认变量,自行设置变量可以使用小写字母,便于判断(根据用户兴趣与喜好);
10、取消变量的方法为:“unset 变量名称”。
环境变量功能
1、 环境变量的说明:env
Environment的缩写,列出所有环境变量。
2、其他所有变量的说明:set
观察当前shell环境下的所有变量。一般来说,不论是否为环境变量,只要与当前shell的操作接口有关的变量,通常都会被设置为大写字母,即:在Linux默认情况下,使用{大写字母}来设置的变量一般为系统内定需要的变量。
需要注意的是:若当时有相当多人同时在线,那么你的变量只能给自己使用(除非改的是系统的默认参数文件,如/etc/profile),而不会干扰到别人。由于登录Linux之后会取得一个PID,而你的设置将只对这个PID与子程序。此外,这次登录所进行的变量(无论是local还是env)设置,如果没有更改配置文件,那么这次设置的变量在下次登录时将被取消(因为没有程序PID)。所以,如果想要变量每次都能在你登录时自动设置好,那么就必须将设置写入登录时加载的设置文件。
3、自定义变量转环境变量:export
取得一个bash后,即可得到一个程序,再执行一次bash,将进入“子程序”。那么进入子程序,所有父进程中自定义的变量将不再继续存在,会存在于子程序中的,仅有环境变量。
在引用他人的文件和其他程序时,export显得相当重要,如果忘记设置export的话,那么不同文件中的相同变量值,将需要一再重复设置,所以,只要在头一个文件使用export,那么后续的文件引用时,将会把变量内容读进来。如果export后面没有变量,此时将会把所有的“环境变量”显示出来。
4、语系文件变量locale
使用locale系统列出当前liunx主机内保存的语系文件,这些文件放在/etc/lib/locale/目录中,但是,当前的shell环境所支持的语系,要根据SUPPORTED这个变量来确定。如果想要修改系统的语系支持,可以修改/etc/sysconfig/il8n文件。当然还有一个比较安全的做法,通过个人的环境设置文件来设置LANG。
5、 变量键盘读取read、数组 array、声明 declare
read [-pt] variable
-p 后面可以接提示符
-t 后面可以接等待的秒数,指定秒数内没反应则命令会自动略过。
declare/typeset 两个功能一样,声明变量属性,后面没有任何参数,会将所有变量名和内容都调出来,就像set一样。
语法:declare [-aixr] variable
-a 变量定义为数组
-i 变量定义为整数数字
-x 变量定义为境变量
-r 变量定义为只读
array 读取,使用${数组}【${A[0]}】
6、获取变量的两种方式 echo $HOME和echo ${HOME}
在${variable}中可以修改变量【echo ${var#/*/}】
7、 命令别名设置:alias、unalias
定义规则与变量定义规则相同。