参考:
https://www.gnu.org/software/bash/manual/html_node/Environment.html
https://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html
文章目录
- 关于函数执行的环境
- 关于命令的分组
- 关于命令的搜索、执行过程
关于函数执行的环境
当一个程序被调用时,它会被提供一个称为环境的字符串数组。这是一个由名值对组成的列表,形式为name=value。
可以通过name=[value]的形式给变量赋值。如果未提供value,则变量被赋值为空字符串。所有的值都会经过各种扩展,如波浪线扩展、参数和变量扩展、命令替换、算术扩展和引号去除。但不进行单词拆分和文件名扩展。赋值语句也可以出现在别名、declare、typeset、export、readonly和local内置命令(声明命令)的参数中。在POSIX模式下,这些内置命令可以出现在一个或多个command内置命令之后,并保留这些赋值语句的属性。
Bash提供了几种操作环境的方式。在调用时,shell会扫描自己的环境,并为每个找到的名字创建一个参数,自动标记为导出给子进程使用。执行的命令会继承环境。export 和 ‘declare -x’ 命令允许向环境中添加和删除参数和函数。如果环境中的参数值被修改,新值将成为环境的一部分,替代旧值。任何执行的命令继承的环境包括shell的初始环境,其值可以在she