首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

直接调用shell脚本和exec脚本的行为有什么不同?

直接调用shell脚本和exec脚本的行为有以下不同:

  1. 直接调用shell脚本:当执行一个shell脚本时,系统会创建一个新的子进程来执行该脚本。子进程会继承父进程的环境变量和文件描述符等信息,执行完脚本后返回到父进程。
  2. exec脚本:使用exec命令执行脚本时,当前进程会被替换为新的脚本进程,即原进程的代码和数据都会被新的脚本进程取代。这意味着原进程的状态和环境都会被完全替换,不会再返回到原进程。

总结:

  • 直接调用shell脚本会创建一个新的子进程执行脚本,执行完后返回到父进程。
  • 使用exec命令执行脚本时,当前进程会被替换为新的脚本进程,不会再返回到原进程。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么shell脚本shell什么区别?

对于什么shell脚本问题,没有深入过该内容朋友了解起来会比较抽象,无法去理解到什么shell脚本意思,并且shell脚本shell存在着一定差别,两者不是混为一谈程序文件,对此问题接下来就为大家通俗易懂介绍...shell什么区别的内容,想要了解朋友就过来看看吧。 image.png 一、什么shell脚本 那么什么shell脚本呢?...二、shell脚本shell什么区别呢 它们两者之间区别就是shell更像是一个框架,属于操作系统一个框架,shell是一个应用程序,shell连接了用户内核,是属于内核中一个最基本编写应用程序...,整合shell脚本全部命令文件,这就是shell脚本shell区别所在,一个是内在命令文件,一个是整个命令文件应用程序,两者存在着一定差异。...以上内容是关于什么shell脚本以及shell脚本shell什么区别的相关介绍,刚开始对shell脚本shell不了解朋友,通过以上内容了解,是不是没有那么抽象了呢,关于shell脚本运作

1.7K30

Shell 脚本调用另一个 Shell 脚本三种方式

提示:以下是介绍为什么写这篇文章: 如何再shell脚本调用其他脚本? 顺序调用会保证脚本顺序执行吗?...一、在 Shell 脚本调用另一个 Shell 脚本三种方式 先来说一下主要以下有几种方式: fork: 如果脚本执行权限的话,path/to/foo.sh。...1.2 exec exec 与 fork 不同,不需要新开一个子 Shell 来执行被调用脚本. 被调用脚本与父脚本在同一个 Shell 内执行。...这是 exec source 区别. 1.3 source 与 fork 区别是不新开一个子 Shell 来执行被调用脚本,而是在同一个 Shell 中执行....所以被调用脚本中声明变量环境变量, 都可以在主脚本中进行获取使用。

3K10
  • Shell 脚本调用另一个 Shell 脚本三种方式

    Shell 从父 Shell 继承环境变量,但是子 Shell环境变量不会带回父 Shellexec exec 与 fork 不同,不需要新开一个子 Shell 来执行被调用脚本....这是 exec source 区别. source 与 fork 区别是不新开一个子 Shell 来执行被调用脚本,而是在同一个 Shell 中执行....所以被调用脚本中声明变量环境变量, 都可以在主脚本中进行获取使用。 其实从命名上可以感知到其中细微区别,下面通过两个脚本来体会三种调用方式不同: 第一个脚本,我们命名为 1.sh: #!...exec 在同一个 Shell 内执行,但是父脚本exec 行之后内容就不会再执行了 source 在同一个 Shell 中执行,在被调用脚本中声明变量环境变量, 都可以在主脚本中进行获取使用...参考: 在shell脚本调用另一个脚本三种不同方法(fork, exec, source)

    4.3K20

    nodejs写bash脚本终极方案!

    ◆ node执行bash脚本: 勉强解决方案:child_process API 例如 child_processAPI里面exec命令 const { exec } = require("child_process...,首先exec是异步,但是我们bash脚本命令很多都是同步。...exec:启动一个子进程来执行命令,与spawn不同是,它有一个回调函数能知道子进程情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行...javascript文件 exec跟ececFile不同是,exec适合执行命令,eexecFile适合执行文件。...js就行,而且它优点还不止这些,一些特点挺有意思: 1、支持ts,自动编译.ts为.mjs文件,.mjs文件是node高版本自带支持es6 module文件结尾,也就是这个文件直接import

    3.9K20

    K8S容器应用优雅关闭-修复5003 Error

    根因分析 3.1、SHELL 模式 CMD 模式带来差异 3.2、直接启动应用通过脚本启动区别 4、总结 K8S容器应用优雅关闭-修复5003 Error “运维就要无所不能,无所不会” 大家好,...根因分析 3.1、SHELL 模式 CMD 模式带来差异 通常Dockerfile中CMDENTRYPOINT来启动应用,启动应用两种模式,shell 模式 exec 模式,对应使用 shell.../app"] 这种方式构建镜像应用启动后PID为1进程是应用进程 3.2、直接启动应用通过脚本启动区别 在实际生产环境中,因为应用启动命令后会接很多启动参数,所以通常我们会使用一个启动脚本来启动应用...在前面脚本启动dockerfile 基础上,定义一个优雅关闭脚本,通过k8s-prestop 在关闭 POD 前调用优雅关闭脚本,实现 pod 优雅关闭。 stop.sh #!...2、对于应用本身代码层面已经实现了优雅关闭业务,但有 shell 启动脚本,容器化后部署到 k8s 上建议使方案一方案二。 3、对于应用本身代码层面没有实现优雅关闭业务,建议使用方案三。

    90030

    Paramiko远程操作Linux服务器

    使用cd命令进行目录切换时不生效 当使用Paramiko库远程执行命令时,cd命令无法直接切换目录,这是因为cd是一个shell内置命令,无法直接通过Paramiko执行,此时可以通过在执行命令时添加额外命令前缀来模拟...cd命令行为。...PS:shell内置命令就是bash shell自身提供命令,而不是文件系统中可执行脚本文件。...通过类似的方法,可以模拟其他shell内置命令行为,但并非所有的shell内置命令都能以这种方式执行,因为某些命令可能依赖于shell上下文环境。...) # 添加等待时间 client.exec_command('tar -zxvf file.tar.gz -C /xxx') 将Paramiko封装成工具类 为了方便在不同项目中引用,我们可以将Paramiko

    28620

    nodejs 写 bash 脚本终极方案!

    ,首先exec是异步,但是我们bash脚本命令很多都是同步。...exec:启动一个子进程来执行命令,与spawn不同是,它有一个回调函数能知道子进程情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行...javascript文件 exec跟ececFile不同是,exec适合执行命令,eexecFile适合执行文件。...js就行,而且它优点还不止这些,一些特点挺有意思: 1、支持ts,自动编译.ts为.mjs文件,.mjs文件是node高版本自带支持es6 module文件结尾,也就是这个文件直接import...另外如果你想加入前端、面试、理财等交流群,或者你任何其他事情想和我交流也可以添加我个人微信 ConardLi 。 文中如有错误,欢迎在后台和我留言,如果这篇文章帮助到了你,欢迎点赞、在看关注。

    2.5K20

    雪城大学信息安全讲义 六、输入校验

    3 调用其它程序 安全地调用其它程序 如果 CGI 脚本这样做,会有什么潜在问题?...host.example.com; rm -rf * exec函数、systempopen Exec 函数系列通过将当前进程影响包装成新,来运行子进程。...许多 Exec 函数版本,它们工作方式不同。它们可以归类于以下几种: 使用或者不使用 Shell 来启动子进程 通过 ShellShell 可以引入比我们预期更多功能。...system(string)调用将字符串传递给 Shell 来作为子进程执行(也就是作为单独派生进程)。它是 Exec 函数便利前端。 popen标准实现与之相似。...不要使用system,而是使用execve,它不调用 Shell,与system不同。 避免execlp(file, ...)execvp(file, ...),它们语义与 Shell 类似。

    56810

    学习笔记0402----shell基础知识

    Shell 并不是简单堆砌命令,我们还可以在 Shell 中编程,这使用 C/C++、Java、Python 等常见编程语言并没有什么两样。...尽管如此,bash sh 还是一些不同之处: 一方面,bash 扩展了一些命令参数; 另一方面,bash 并不完全 sh 兼容,它们有些行为并不一致,但在大多数企业运维情况下区别不大,特殊场景可以使用...sh又回到了脚本source.sh,而exec.sh在调用2.sh脚本时候,执行完2.sh脚本直接退出,并没有回到exec.sh,我们可以做这样一个小尝试,在命令模式输入exec ./2.sh ,会发现终端退出了...,也可以这样理解,exec在执行脚本时候是新开了一个bash,执行完bash直接退出,不会在回到终端。...在前面学习find命令时候一个-exec参数,这个参数作用是把find查找到结果给后面的命令,那我们在这儿是不是可以这样理解,exec在前,执行脚本这个参数是无法回到父脚本

    71550

    Shell:子shell概念

    目录 shell环境 什么是子shellshell分类 shell环境 每个shell进程一个自己运行环境,不同Shell进程不同Shell环境。...Shell解析命令行、调用命令行过程都在这个环境中完成。 调用shell程序时,会读取配置文件来初始化Shell环境。...子shell会从父shell中继承很多环境,如变量、命令全路径、文件描述符、当前工作目录、陷阱等等,但子shell很多种类型,不同类型shell继承环境不相同。...子shell分类 大致分为两类: sub shell:通过进程替换(cmd)、命令替换 child shell:通过以可执行文件方式运行shell脚本直接在当前shell中启动shell...父shell通过fork-exec方式创建子shell,导致父shellshell除了维持“父子关系”外,没有其他关联。

    1.3K30

    windows提权看这一篇就够了

    它将生成关闭UAC标志第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload体系架构操作系统匹配。...它将生成关闭UAC标志第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload体系架构操作系统匹配。...此模块修改注册表项,但在调用payload后将清除该项,这个模块需要payload体系架构操作系统匹配,但是当前低权限meterpreter会话体系架构中可能不同。.../aspx dbconfig.asp/aspx)等文件,查找数据库链接信息,查找可进入数据库用户名密码 理论上,什么用户启数据库,xp_cmdshell就执行什么权限 #爆破出用户名密码,...默认cmd组件禁用,必须安装cmd_shell组件 EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure

    3.3K20

    windows提权看这一篇就够了

    它将生成关闭UAC标志第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload体系架构操作系统匹配。...它将生成关闭UAC标志第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload体系架构操作系统匹配。...此模块修改注册表项,但在调用payload后将清除该项,这个模块需要payload体系架构操作系统匹配,但是当前低权限meterpreter会话体系架构中可能不同。.../aspx dbconfig.asp/aspx)等文件,查找数据库链接信息,查找可进入数据库用户名密码 理论上,什么用户启数据库,xp_cmdshell就执行什么权限 #爆破出用户名密码,...默认cmd组件禁用,必须安装cmd_shell组件 EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure

    15.9K31

    Docker实践之03-Dockerfile指令详解

    其格式两种: shell格式 RUN 就像直接在命令行中输入命令一样。如:RUN echo 'Hello, Docker!...ENTRYPOINT,入口点 ENTRYPOINT格式RUN指令格式一样,分为exec格式shell格式。...那么了CMD后,为什么还要有ENTRYPOINT呢?这种 ""什么好处么?让我们来看几个场景。...ENV VERSION=1.0 DEBUG=on NAME="Happy Feet" 这个例子中演示了对含有空格值用双引号括起来办法,这Shell行为是一致。...原因其实很简单,在Shell中,连续两行是同一个进程执行环境,因此前一个命令修改内存状态,会直接影响后一个命令;而在Dockerfile中,这两行RUN命令执行环境根本不同,是两个完全不同容器。

    90231

    【建议收藏系列】爆肝3w字带你理解什么叫运维~

    虽然如此,bashsh还是很多不同,一方面,bash扩展了一些命令参数,另一方面,bash并不完全sh兼容,有些行为并不一致,所以bash需要模拟sh行为:当我们通过sh这个程序名启动bash...;ls -l 则有不同效果,cd ..命令是直接在交互式Shell下执行,改变交互式ShellPWD,然而这种方式相当于这样执行Shell脚本: $ source ....Shell脚本函数必须先定义后调用,一般把函数定义都写在脚本前面,把函数调用其它命令写在脚本最后(类似C语言中main函数,这才是整个脚本实际开始执行命令地方)。...基本语法 我们知道C变量Shell脚本变量定义使用方法很不相同,表达能力也不相同,C变量各种类型,而Shell脚本变量都是字符串。...egrepfgrep命令只跟grep很小不同

    2.1K30

    shell编程,脚本执行方式知多少?

    三种方式,分别是fork、sourceexec。 1. fork 即通过sh 脚本名进行执行脚本方式。下面通过一个简单例子来讲解下它特性。 建father.sh,内容如下: #!...父shell进程执行完毕 通过以上例子,可以知道fork特性为: 在一个脚本调用另一个脚本,被调用脚本执行完成之后返回给父shell进程,父shell进程继续执行剩下指令 2. source...:son var 通过以上例子,可以知道source特性为: source调用,是把被调用脚本加载到当前shell环境中来执行,就好像是在一个脚本里面运行一样,他们定义局部变量共享 3. exec...]# sh father.sh 父shell开始执行 子shell被父shell exec调用,执行权已经被抢占过来了,不会在交回给父shell进程 通过以上例子,可以知道exec特性为: exec...调用,也是fork一个子shell环境来执行被调用脚本,但是父shell环境执行权会被剥夺,也就是执行权被交给了被调用脚本,父shell环境不再拥有执行权,无论父shell脚本指令是否执行完成,都不在被执行

    35840

    shell编程,脚本执行方式知多少?

    shell编程时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他脚本呢?...三种方式,分别是fork、sourceexec。 1. fork 即通过sh 脚本名进行执行脚本方式。下面通过一个简单例子来讲解下它特性。 创建father.sh,内容如下: #!...:son var 通过以上例子,可以知道source特性为: source调用,是把被调用脚本加载到当前shell环境中来执行,就好像是在一个脚本里面运行一样,他们定义局部变量共享 3. exec...# sh father.sh 父shell开始执行子shell被父shell exec调用,执行权已经被抢占过来了,不会在交回给父shell进程 通过以上例子,可以知道exec特性为: exec调用...,也是fork一个子shell环境来执行被调用脚本,但是父shell环境执行权会被剥夺,也就是执行权被交给了被调用脚本,父shell环境不再拥有执行权,无论父shell脚本指令是否执行完成,都不在被执行

    56110

    shell for循环、循环变量值付给其他shell脚本

    第三种写法 seq 使用 for i in `seq 1 100` do echo $i done 将循环变量赋值到下一个脚本: 在运行shell脚本时候,三种方式来调用外部脚本.../script.sh) 1、execexec /home/script.sh): 使用exec调用脚本,被执行脚本会继承当前shell环境变量。...但事实上exec产生了新进程,他会把主shell进程资源占用并替换脚本内容,继承了原主shellPID号,即原主shell剩下内容不会执行。...shell保留,类似将调用脚本内容复制过来直接执行。...执行完毕后原主shell继续运行。 3、fork(/home/script.sh) 直接运行脚本,会以当前shell为父进程,产生新进程,并且继承主脚本环境变量和声明变量。

    88040
    领券