首页
学习
活动
专区
工具
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.8K30

在 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 中执行....所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用。

3.5K11
  • 在 Shell 脚本中调用另一个 Shell 脚本的三种方式

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

    4.4K20

    nodejs写bash脚本终极方案!

    ◆ node执行bash脚本: 勉强解决方案:child_process API 例如 child_process的API里面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中CMD和ENTRYPOINT来启动应用,启动应用有两种模式,shell 模式和 exec 模式,对应的使用 shell.../app"] 这种方式构建的镜像应用启动后PID为1的进程是应用进程 3.2、直接启动应用和通过脚本启动区别 在实际生产环境中,因为应用启动命令后会接很多启动参数,所以通常我们会使用一个启动脚本来启动应用...在前面脚本启动的dockerfile 基础上,定义一个优雅关闭的脚本,通过k8s-prestop 在关闭 POD 前调用优雅关闭脚本,实现 pod 优雅关闭。 stop.sh #!...2、对于应用本身代码层面已经实现了优雅关闭的业务,但有 shell 启动脚本,容器化后部署到 k8s 上建议使方案一和方案二。 3、对于应用本身代码层面没有实现优雅关闭的业务,建议使用方案三。

    93230

    Linux:进程替换

    所以所谓的进程替换 就是为了让父进程和子进程执行不同的代码!! ...1.1 简单的进程替换引入      为了完成程序替换的工作,让某些可执行程序可以让子进程去使用从而让他实现和父进程执行完全不同的代码,存在一些以exel形式的系统调用接口 我们会发现这里并没有if...,所以其实这六个接口最终都是会转化成调用系统调用接口,所以我们更多的需要关注着3号手册的这六个接口有什么区别。  ...(1)任何语言都有像exec这类的接口 (2)语言可以互相调用的原因是 无论是什么语言写的程序 在操作系统看来都是进程 1.5.3 将命令行参数和环境变量传递给另一个程序  环境变量是在子进程创建的时候就默认继承了...,将标准输入重定向到最后一个管道的读端 // 4.3 分别让不同的子进程执行不同的命令--- exec* --- exec*不会影响该进程曾经打开的文件,不会影响预先设置好的管道重定向

    13410

    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

    32320

    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.6K20

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

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

    57710

    JAVA安全之Groovy命令注入刨析

    evaluate,在这里会随机生成一个ScripName作为groovy脚本的名称,设置执行Groovy的命令执行为/groovy/shell 继续跟进this.evaluate(gcs),继续跟进:...随后调用parse进行脚本解析并调用script.run进行执行,后续调用了底层 在执行脚本期间会加载对应的类随后执行对应的方法: 调用栈信息如下: runCalculator:1,Script1run...,它类似于Java中的闭包,但更注重方法的封装和重用,使用MethodClosure可以简化对对象方法的调用,同时也可以用于异步编程或事件处理等场景,此类场景的利用需要参数可控 调用示例 在这里直接使用...,这些注解可以用于修改和增强Groovy代码的编译时行为,使用AST转化可以让开发者以声明的方式扩展语言特性或实现一些元编程功能,我们也可以利用AST注解能够执行断言从而实现代码执行(本地测试无需assert...命令执行漏洞的演示案例: 漏洞复现 ElasticSearch支持使用在沙盒中的Groovy语言作为动态脚本: 执行方式1:Java沙盒绕过法 ES对执行Java代码有沙盒,在这里我们可以使用Java反射来绕过

    16810

    学习笔记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在前,执行脚本的这个参数是无法回到父脚本。

    73550

    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.4K20

    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

    16.9K31

    Shell:子shell概念

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

    1.4K30

    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命令的执行环境根本不同,是两个完全不同的容器。

    93831

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

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

    2.1K30

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

    有三种方式,分别是fork、source和exec。 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脚本中的指令是否执行完成,都不在被执行

    36540

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

    shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?...有三种方式,分别是fork、source和exec。 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脚本中的指令是否执行完成,都不在被执行

    57110
    领券