1.Linux下的变量分为:
a)环境变量
b)自定义变量
c)与bash操作接口有关的变量,例如PS1,$,?等等这样的变量吧
Question:有关环境变量会不会有一个配置文件,记录了系统的所有环境变量呢?
2.有关变量的一些操作:
a)读取变量内容:$变量名 或 ${变量名}
b)取消变量:unset 变量名
c)将自定义变量变成环境变量:
——》export 自定义变量名
——》declare -x 自定义环境变量
Question:这个变成了环境变量的变量,会不会在下次开机的时候继续有效呢,会不会系统的环境变量的设置其实是有一个配置文件的,其中会列举了系统的所有环境变量,系统开机的时候会主动去加载这个配置文件?
d)查看系统的所有环境变量:env 或 export
e)查看系统的所有变量:set 或 declare
f)环境变量变成自定义变量:declare +x 环境变量名
3.声明或定义一个自定义变量的方式:
a)直接方式:变量名=变量值
b)read方式(就是从键盘读取变量值,用于交互比较好):read [-pt] 变量名
c)declare/typeset方式:declare [-aixr] 变量名
Remarks:declare在声明或定义一个变量时,可以指定该变量时数组类型还是整型的。如果指定变量为整型的话,则后面可以直接利用变量进行算数操作。例如,declare -i sum=0,则后面可以直接用sum=sum+2这样的表达式。如果你不嫌麻烦的话,仍旧可以使用sum=$(($sum+2))
4.关于自定义变量和环境变量的区别
一个shell中的自定义变量和环境变量的区别体现在该shell的子shell环境能够继承该变量。如果是自定义变量,子shell不会继承该变量;如果是环境变量,子shell就会继承该变量。
将一个自定义变量转换成环境变量的方法如下:
export 自定义变量名称
当你登录linux取得一个shell(如bash)之后,该shell就是一个独立的进程。接下来你在该shell下面执行任何操作都是有这个shell衍生出来的:
(1)如果该操作是用sh filename.sh或./filename.sh,那么会再取得一个该登录bash的bash子进程,如果脚本中含有命令,那么又是该bash子进程的子进程。
(2)如果该操作是一个命令,例如find,那么直接在登录取得到的bash下生成一个find的子进程。