命令的执行环境
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
- 环境变量
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论