理解父与子shell?能干什么 明确父子shell作用域,要是不知道变量不知在哪个,执行肯定不对
单引号不能识别特殊语法
双引号能识别特殊语法
每次调用bash/shell解释器执行脚本,都会开启一个子shell,因此不保留当前的shell变量,通过pstree命令检查进程树
父外层
子内层
linux命令
在linux中反引号,中的命令执行结果会被保留下来
调用source或者点符号是在当前shell环境加载脚本,因此保留变量。
pstree
环境变量 也成全局变量 能找出你的linux服务器上,各种变量
环境变量一般指的是用export内置命令导出的变量,用于定义shell的运行环境
shell通过环境变量确定登录的用户名,PATH路劲,文件系统等各种应用
环境变量可以在命令行中临时创建,但是用户退出shell终端,变量即丢失,若永久生效,需要修改环境变量配置文件。
每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件,优先加载变量,读取,以个人的优先生效。
当你要给所有用户都是用某个变量,写入全局即可/etc/profile
数组:
普通数组:只能使用整数作为数组索引(元素的下标)
关联数组:可以使用字符串作为数组索引
变量分类:
本地变量:临时变量;针对当前用户的当前进程生效;变量名=变量值
环境变量:将本地变量(临时变量)用export导出:export A = hello
当前用户进程以及子进程生效
export PATH=$PATH:/usr/local/mysql/bin (临时生效)
/etc/profile 和~/bash._profile
环境变量永久生效:修改/etc/profile (针对系统所有用户所有进程生效)
修改用户家目录 ~/.bash_profile (针对当前用户生效)
配置文件bashrc:定义别名,umask,函数;全局/etc/bashrc(系统中所有用户的bash信息配置)
局部用户家目录里~/.bashrc(当前用户的bash信息配置)
变量定义
shell中变量不分类型
变量名=变量值
等号量变不能有任何空格
变量名严格区分大小写
变量定义
有类型变量 declare-i/-r/-x/-a/-A
交互式定义变量 read[-p/-n/-t/-s] 变量名
数组定义
普通数组:元素的索引下标是整数
关联数组元素的索引下标是字符串
定义数组
array1[索引下标]=元素1
array2=([索引下标]=元素1 [索引下标]=元素2…)
变量获取
echo $变量名
echo ${变量名}
检查系统环境变量
set 打印所有的变量 全局和局部
set命令能找的哦啊当前shell环境中的所有变量,以及包括局部变量(shell脚本局部定义的变量)