Skip to content

Latest commit

 

History

History
37 lines (21 loc) · 1.4 KB

命令的执行环境.org

File metadata and controls

37 lines (21 loc) · 1.4 KB

命令的执行环境

shell 脚本的执行环境包括如下内容

  • 打开的文件句柄,可能继承于父shell,或者被 exec 重定向操作所修改
  • 当前的工作目录,可能继承于父shell,或者被 cd, pushd, 和 popd 命令所修改
  • 创建文件的mode mask,可能继承于父shell或者被 umask 命令所修改
  • 被trap所设置的信号处理
  • shell参数,可能被变量赋值操作所修改,或者被 set 命令所设置,如果是环境变量则可能由父shell继承
  • 定义的shell函数,可能在执行期间动态定义,也可能继承自父shell(需要通过export标注)
  • 开启/关闭的shell选项,可以在调用shell时设置,也可以为 set 和 shopt 设置. 若bash处于POSIX shell模式下,则子shell会继承父shell的 -e 选项,
  • shell别名,可以被 alias 定义
  • 各种前台和后台job

而当某个外部命令被shell调用时,该外部命令会从shell中继承以下内容:

  • shell所打开的文件句柄, 包括被重定向操作所修改的句柄. 若调用命令时后面加上了&, 而bash没有开启job control的情况下,命令的stdin会被重定向到 /dev/null
  • 当前的工作目录
  • 创建文件时的mode mask
  • 环境变量