• 父shell 和 子shell; shell脚本的几种执行方式


    Linux执行 脚本 有两种方式,每种方式又有具体不同的执行方法, 主要区别在于是否建立 “子shell 也叫 subshell”。

    方式1: source  filename  或者  . filename (点 空格 filename)

      不创建 子shell,在当前 bash 环境下读取filename中的命令,并执行。

            关于 source  . 方法: 如果filename不在当前路径下,或者filename不在执行程序默认的搜索路径下(也就是PATH环境变量), bash可能会提示找不到 filename。

    方式2: bash filename  或者 sh filename  或者 ./filename (点 斜杠 filename)  或者  /path1/path2/filename (斜杠 加上 绝对路径)

      创建 子shell, 在当前 bash 环境下 创建一个新的 子shell 来读取filename中的命令,并执行。filename脚本执行完后,子shell 环境随即关闭,然后又回到 父shell 中。

      关于 bash  sh   ./ 方法: 如果filename不在当前路径下,或者filename不在执行程序默认的搜索路径下(也就是PATH环境变量), bash可能会提示找不到 filename。

      关于 bash 和 sh 方法:filename可以不必事先设定可执行权限。 因为是将filename作为参数传递给bash或者sh,是被调用执行。

      关于 ./ 方法: filename必须具备可执行权限,它才可以自己执行。

      额外:子shell 继承 父shell 的变量, 子shell 通过 export 来使用 父shell 的变量。 (跟编程中的作用于有点儿相似)

      

    子shell 从 父shell 继承如下内容:

      当前工作目录;

      环境变量;

      标准输入、标准输出、标准错误输出;

      所有已打开的文件标识符;

      忽略的信号;

    子shell 不能从 父shell 继承的内容如下:

      除环境变量和 .bashrc文件定义的变量之外的shell变量;

      未被忽略的信号;

    下面编写一个脚本(a1.sh) 来玩一下这几种情况:

     

     更多的有关 子shell 继承 父shell 内容,在 子shell 中使用 从 父shell 里继承的内容。 以后有使用案例了,在贴上具体的操作过程。

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    数据库周刊第十七期来啦!
    一文详解MySQL中的事件调度器EVENT
    新买的Mac该如何保养?
    五步搭建自助BI平台,业务分析自给自足,不再等待!
    Oracle坏块处理常用SQL
    懒人看执行计划神器 for Oracle
  • 原文地址:https://www.cnblogs.com/azbane/p/14398795.html
Copyright © 2020-2023  润新知