在 Shell 脚本中调用另一个 Shell 脚本的三种方式_zollty的博客-程序员秘密_shell脚本调用另一个shell脚本

技术标签: Linux技术专栏  Shell中调用Shell  脚本中调用脚本  Shell调用方式  

有3种方式:

  •     fork: 如果脚本有执行权限的话,path/to/foo.sh。如果没有,sh path/to/foo.sh。

  •     exec: exec path/to/foo.sh

  •     source: source path/to/foo.sh

fork

    fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子 Shell 执行的时候, 父 Shell 还在。子 Shell 执行完毕后返回父 Shell。 子 Shell 从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回父 Shell。

source

    不新开一个子 Shell 来执行被调用的脚本,而是在当前同一个 Shell 中执行,所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用。 

exec

    exec 也是在当前同一个Shell中执行,但是与 source不同,使用 exec 调用一个新脚本以后, 父脚本中 exec 行之后的内容就不会再执行了。

   exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行。

   系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。

附:

  一个进程主要包括以下几个方面的内容:

(1) 一个可以执行的程序

(2) 与进程相关联的全部数据(包括变量,内存,缓冲区)

(3) 程序上下文(程序计数器PC,保存程序执行的位置) 

参见:shell 中 exec 和 source 命令解析 - 冯兴伟 - 博客园

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zollty/article/details/122263576

智能推荐

django-rest-framework serializers.Serializer使用总结_lrtxpra的博客-程序员秘密

django-rest-framework是构建web API的一个包,功能强大也很灵活,遵循restful标准,如果对于rest标准还不熟悉,推荐看一下阮一峰的文章理解restful架构restful设计指南django-rest-framework安装pip install djangorestframework这篇文章对django-rest-framework有一个详细的综述,如果还不了解...

HTML5 Web SQL实现简单的增删改查websql使用方法vue2.0使用websql实现浏览器存储_新建vue2.0 项目实现增删查该_苏雨丶的博客-程序员秘密

websql的一些基本操作我已经把项目打包到gitgub上面,可以直接访问的地址在下面 [在线测试地址] Web SQL 是在浏览器上模拟数据库,可以使用JS来操作SQL完成对数据的读写。核心方法以下是规范中定义的三个核心方法:openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。transaction:这个方法让我们能够控...

mysql数据库表结构转到postgres数据库简单方法_君不在的博客-程序员秘密

第一步,确保电脑上装有这两个数据库。第二步,下载一个管理数据库的软件,如navicat premium等。第三步,此步开始有截图。选中要转移的表,拖拽至另一个数据库想要存放的位置,或选中要转移的表,复制,到另一个数据库里粘贴,如图所示。第四步,之后会出现一个名为“数据传输”的窗口,在这里可以根据需求选多张表到另一个数据库的指定位置,之后点击开始,点击确认。之后会自动传输数据...

喝茶有讲究:各种茶的功效_VI7591的博客-程序员秘密

玫瑰花茶 美化皮肤,舒解神经,适女性,小孩饮用.薰衣草茶 去疤美容,舒解神经,适女性,小孩饮用.铃典 减肥,健身,适女性,小孩饮用.卡蒙米罗 预防感冒,适女性,小孩饮用.洛神花茶 降血压莎波力 味道重,调整消化系统,醒酒醒脑,适男性饮用波芦媚那 味道重,调整消化系统,醒酒醒脑,适男性饮用泰姆茶 抑制气喘,适小孩饮用姜母茶 去风发汗,开脾胃决明茶 明目,清血,味淡.鱼腥...

随便推点

Vivado使用报错记录_TT694的博客-程序员秘密

@FPGAVivado使用报错记录ERROR: [VRFC 10-3195] cannot open include file ‘practice0105.v’综合、编译都通过,但是仿真测试程序报错。报错原因头文件找不到导致报错。解决办法1.将所有要编译文件放在同一个文件夹中,且编译时在该文件夹中进行编译;2.使用include命令时,使用绝对路径对文件进行引用。...

linux的ib网卡驱动安装,安装IB驱动_蒋伯雍的博客-程序员秘密

环境ubuntu 16.04Mellanox Technologies MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] (rev b0)[email protected]:~$ lspci | grep Mell01:00.0 InfiniBand: Mellanox Technologies MT26428 [ConnectX VPI ...

Win10+Anaconda+CUDA11+cuDNN8+TensorFlow2.6+VScode/Pycharm/Jupyter notebook配置深度学习环境_win10,cuda 11, cudnn8.6 安装tensorflow_Marlowe.的博客-程序员秘密

1.Anaconda安装点击进入官网:Anaconda官网,下滑到底,根据系统安装。这里安装的是Windows版。打开安装包,一路next,我这里装在D盘。都勾选上,给Anaconda配置环境变量。安装完成后,打开cmd验证:如果键入conda list命令能够返回一系列Python库列表信息,即说明Anaconda安装成功。若命令提示符无法识别conda命令,即说明安装失败。点击开始页面,打开Anaconda Prompt输入两条命令,设置anaconda源为清华镜像:conda

vrrp_写出vr和lint变量的区别_lin_money的博客-程序员秘密

n通常,同一网段内的所有主机都设置一条相同的以网关为下一跳的缺省路由。当网关发生故障时,本网段内所有以网关为缺省路由的主机将无法与外部网络通信。n通过VRRP可以避免由于局域网网关单点故障而导致的网络中断。...

6.k8s主控节点-部署etcd_etcd 建立用户[email protected]的博客-程序员秘密

supervisorcfssletcdk8s主控节点-部署etcd一、准备集群证书(证书环境参考4.证书环境章节)准备ca-config.json技巧:cfssl print-defaults config能够打印配置文件模板作参考vi /etc/certs/ca-config.json{ "signing": { "default": { "expiry": "175200h" }, "profiles".

写给笨人的法线贴图原理_Joeeeeeeeeechi的博客-程序员秘密

转载自https://www.cnblogs.com/flytrace/p/3387748.html  我算个笨人吧.笨人以前弄懂一些东西后,讲给笨人听往往更有效.看之前请自行具备图形学关于光照的基础知识....

推荐文章

热门文章

相关标签