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

源脚本与执行脚本:它们在哪个shell进程中运行?

源脚本和执行脚本在当前的shell进程中运行。

在Linux和Unix系统中,当我们运行一个脚本时,操作系统会创建一个新的进程来执行该脚本。这个进程会从磁盘上读取脚本文件,并将其加载到内存中。接着,脚本会被解释器解释执行。

源脚本是指存储在磁盘上的脚本文件,它通常包含了一系列的命令和逻辑。当我们执行源脚本时,操作系统会创建一个新的shell进程,并通过解释器逐行解释执行脚本中的命令。

执行脚本是指在shell命令行中直接输入的脚本命令,也可以是通过其他方式调用的脚本。执行脚本不需要从磁盘上读取文件,而是直接将命令传递给当前的shell进程执行。

在某些情况下,源脚本也可以被执行脚本调用,例如使用. source_script.shsource source_script.sh命令来加载源脚本中定义的环境变量或函数。这样的话,源脚本的内容将在当前的shell进程中执行。

总结起来,源脚本和执行脚本都是在当前的shell进程中运行。它们的不同在于源脚本是从磁盘上读取的文件并逐行解释执行,而执行脚本是直接通过命令传递给当前的shell进程执行。

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

相关·内容

在python脚本中执行shell命令的方法

在python脚本中执行shell命令的方法 最近在写python的一些脚本,之前使用python都是在django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本的时候,发现了...使用Python处理一个shell命令或者一个执行一个shell脚本,一般情况下,有下面三种方法,下面我们来看: 第一种方法是使用os.system的方法 os.system("cmd") 我们在当前目录下面创建一个...命令打印出来aaa.sql中的内容,然后下面出现的数字0代表上述命令执行成功;如果我们打印bbb.sql则返回值是256,表示执行中出现了问题。...shell命令pwd的时候,commands.getstatusputput返回值是0,也就是执行成功,返回结果是当前的目录;当执行pwddddd的时候,由于不是系统命令,所以返回结果是command...not found,返回值是32512 看到这里,可能大家有一个疑问,就是这两种方法都可以返回执行结果,它们有什么不同?

5.3K00

在 Shell 脚本中执行语法检查调试模式

文章目录 shell 脚本调试系列 概述 启用 verbose 调试模式 在 Shell 脚本中启用语法检查调试模式 通过修改脚本的首行来启用脚本检查 内置的 set 命令来在脚本中启用调试模式 shell...脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 ---- 概述 ?...写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作。 在本系列的这一部分,我们将了解如何使用语法检查调试模式。...记住我们之前在本系列的 Linux 中启用 Shell 脚本的调试模式 中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试。...它会让 shell 读取所有的命令,但是不会执行它们,它(shell)只会检查语法。 一旦 shell 脚本中发现有错误,shell 会在终端中输出错误,不然就不会显示任何东西。

1.9K20
  • 在复杂的服务器环境中,如何优化 Shell 脚本的性能,以减少系统资源消耗并提高执行效率?

    以下是一些优化 Shell 脚本性能的建议: 减少系统调用:尽量减少脚本中的系统调用次数,因为系统调用是比较耗时的操作。...可以通过将多个命令放在一个子 shell 中或使用管道来减少系统调用次数。 避免过多的 IO 操作:尽量减少文件读写操作,特别是在循环中。...可以将需要频繁读写的数据保存在变量中,减少对文件系统的访问。 使用原生命令:尽量使用原生的 Shell 命令,而不是外部命令或脚本。原生命令一般比外部命令执行更快。...合并命令:将多个命令合并成一个命令,减少进程间切换的开销。可以使用命令的选项和参数来完成多个操作。 使用并行处理:如果脚本中有多个独立的任务,可以考虑使用并行处理来加快执行速度。...管道优化:如果脚本中使用了管道,可以考虑使用更高效的命令或选项,减少数据复制和处理开销。 使用更高效的数据结构:在脚本中使用适当的数据结构来存储和处理数据,如数组或关联数组。

    10110

    shell实现SSH自动登陆

    shell脚本基础 在编写ssh自动登陆脚本之前,先说一下shell脚本的基础,此基础不是一些语法什么的,网上到处都是,这里总结了一下shell脚本的运行机制~ shell脚本的运行方式 首先要说一下shell...同时也使得我们运行shell,知其所以然。 通过文件名执行 shell脚本可以直接通过文件名执行,需要注意的是文件需要执行权限。通过 sudo chmod +x ....简单的说,它指示了此脚本运行时的解释器,所以,使用文件名直接执行shell脚本时,必须带上shebang; 此外,我们还可以在shebang后面直接附加选项,执行时我们默认使用选项执行; 如 test.sh...: spawn command命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令; 在ssh自动登陆脚本中,我们使用 spawn ssh user_name@ip_str,...,当然不要忘了在string后面添加上 \r 表示输入回车; interact命令: interact命令很简单,执行到此命令时,脚本fork的子进程会将操作权交给用户,允许用户与当前shell进行交互

    3.6K102

    bug 导致 77 TB数据被删光,HPE 称 100% 负责:在执行过程中重新加载修改后的shell脚本,从而导致未定义的变量

    这起事件发生在2021年12月中旬,导致14个研究小组总共丢失了约3400万份文件。据京都大学声称,来自其中四个研究小组的数据无法通过备份系统来恢复。...然而,负责备份日本惠普公司制造的这个超级计算机系统的存储的程序出现了一个缺陷,导致脚本运行失灵。HPE表示,其结果是无意中删除了这个大容量备份磁盘存储的一些数据。...该公司承认:“我们对这个修改后的脚本的发布程序缺乏考虑……我们没有意识到这种行为带来的副作用,脚本仍在运行时就发布「更新版」,结果覆盖了脚本。”...HPE补充道:“这导致了在执行过程中重新加载修改后的shell脚本,从而导致未定义的变量。结果,「大容量备份磁盘存储」中的原始日志文件被删除,而原本应该删除保存在日志目录中的文件。”...京都大学已暂停了受影响的备份流程,但计划在解决程序中的问题后在本月底之前恢复。它建议用户将重要文件备份到另一个系统。 京都学校和HPE都声称,他们将采取措施防止此类事件再次发生。

    1.9K20

    2024年3月份最新大厂运维面试题集锦(运维15-20k)

    答案:系统调用是应用程序与操作系统内核之间进行通信的接口,用于执行诸如文件操作、进程控制和网络通信等任务。...Shell脚本的第一行通常是什么?为什么重要? 答案: Shell脚本的第一行通常是#!/bin/bash或其它Shell的路径,这行被称为shebang。它告诉操作系统使用哪个解释器来执行脚本。...这对于确保脚本按预期方式运行很重要,即使在不同环境中也能保持一致性。 62. 如何在Shell脚本中声明和使用变量?...调试Shell脚本时,可以使用set -x选项在执行时显示命令和它们的参数。 70. 如何优化Shell脚本的性能?...如何在Shell脚本中实现并发和并行执行? 答案: 在Shell脚本中,可以通过在命令后添加&符号来实现并发执行。这会使命令在后台执行。使用wait命令可以等待所有后台进程完成。

    3K10

    Shell编程详解

    在Linux内核外面包了一个壳 Shell是一种用于与操作系统进行交互的命令行解释器 它是一种脚本语言,可以通过编写一系列的命令和脚本来执行操作系统的功能和任务 我们在终端中编写的命令都是Shell命令.../bin/bash在 Shell 脚本的第一行,表示该脚本应该用哪个解释器运行 可以省略,如果省略会使用当前会话的默认shell解释器 #!...:后台运行的最后一个进程的进程ID 本地变量命名规则 创建脚本script.sh #!..." 四、Shell的执行方式 在Linux系统中,运行Shell脚本(如 .sh 文件)有多种方式。...使用当前Shell默认的解释器 脚本在当前Shell环境中运行,不会启动新的子Shell 脚本中的变量和修改会直接影响当前Shell环境 无需给脚本赋执行权限,只要有读权限即可 4、将脚本放入系统PATH

    14310

    linux

    VI编辑器与shell脚本 使用vi编辑器编辑和修改文档,  shell脚本能够对输入值进行文件 数字 字符串的判断比较。...在Shell脚本中不仅会用到前面学习过的很多Linux命令以及正则表达式、管道符、数据流重定向等语法规则,还需要把内部功能模块化后通过逻辑语句进行处理,最终形成日常所见的Shell脚本。...; 第三、四行的可执行语句也就是我们平时执行的Linux命令了 除过运用Bash来运行Shell脚本以外,还可以通过直接运行文件执行。...3.一个完整的Shell脚本应该包含哪些内容?   答:应该包括脚本声明、注释信息和可执行语句(即命令)。 4.分别解释Shell脚本中$0与$3变量的作用。...答:在Shell脚本中,$0代表脚本文件的名称,$3则代表该脚本在执行时接收的第3个参数。 5.if条件测试语句有几种结构,最灵活且最复杂的是哪种结构?

    1.4K51

    写好shell脚本的13个技巧

    这里给出的所有示例都可以使用与 POSIX 标准兼容的 shell 运行(#!/bin/sh),因为它是最常用的。...检查所有命令的可用性 脚本通常会调用其他脚本或二进制文件。在调用可能不存在的命令时,请先检查它们是否可用。可以使用“command -v 二进制文件名称”来执行此操作,看看它的退出代码是否为零。...虽说脚本都应该能够单独运行,不过有时候也有必要让它们把输出结果传给另一个脚本。可以利用stty -echo来实现--silent标记: #!...用颜色编码输出 在脚本中调用其他二进制文件或脚本时,对它们的输出进行颜色编码,这样就可以知道哪个输出来自哪个脚本或二进制文件。这样我们就不需要在满屏的黑白输出文本中查找想要的输出结果。...在退出时使用不同的错误码 在绝大多数 shell 脚本中,exit 0 表示执行成功,exit 1 表示发生错误。对错误与错误码进行一对一的映射,这样有助于脚本调试。 #!

    54532

    100个Linux命令(7)-进程管理

    ,并与内核进行交互 多任务与 cpu 时间片 一颗物理 cpu 在同一时刻只能运行一个进程,只有多颗物理 cpu 才能真正意义上实现多任务。...那是否可以理解为所有命令、脚本其运行环境都是在子shell中呢?显然,上面所说的bash内置命令不是在子shell中运行的。其他的所有方式,都是在子shell中完成,只不过方式不尽相同。...但从执行bash命令后进入了新的shell环境来看,它有其父bash进程,所以它算是进入了子shell。 (3)执行shell脚本:因为脚本中第一行总是"#!...exec:exec是加载程序替换当前进程,所以它不开启子shell,而是直接在当前shell中执行命令或脚本,执行完exec后直接退出exec所在的shell。...它也不会开启子shell,直接在当前shell中执行调用脚本且执行脚本后不退出当前shell,所以脚本会继承当前已有的变量,且脚本执行完毕后加载的环境变量会粘滞给当前shell,在当前shell生效。

    1.7K20

    解决shell脚本中source etcprofile重载配置文件不生效的问题

    背景 最近在通过shell脚本在Linux系统安装Java或Python的过程中,遇到了shell脚本中的“source /etc/profile”无法生效的问题,虽然也可以在执行完脚本后再次执行“source...python3命令) 2.原因 执行脚本时,脚本中的命令是在子shell中执行,子shell只能继承父shell的环境变量,而无法修改父shell的环境变量,所做的修改仅对当前子shell有效。...(点) 用于使shell读取指定的shell文件,并依次执行文件中的所有语句 作用于当前shell进程 sh 执行指定shell脚本,在子shell中执行脚本中的语句 创建一个子shell,在新的namespace...中执行此脚本,继承父shell环境变量,但不改变父shell环境变量,仅对当前子shell有效 ./ 执行当前脚本文件,前提是待执行的文件具有可执行属性,等价于sh 创建一个子shell,在新的namespace.../运行的时候,会开启一个子shell进程,子shell进程继承了父shell(无source命令)的特性,所以会报错“source: not found”。

    9.2K31

    Shell脚本学习1

    Shell脚本学习 1、Shell简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本 Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种...:是Shell的一个内部指令,用于在屏幕上打印出指定的字符串 echo arg #输出arg变量 echo -e arg #执行arg里的转义字符。...$* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。...对于 Shell 脚本,就是这些脚本所在的进程ID。...若此替换出现在Shell脚本中,那么脚本将停止运行。 ${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。

    31920

    4个Shell小技巧,帮你提高学习生产效率

    晓查 发自 凹非寺 转自量子位 | 公众号 QbitAI 在机器学习的实践过程中,用好Shell能帮你很多节省时间。 最近,有位来自ETHZ的学生分享了一些Shell小技巧。...对程序员来说,这些技巧更重要的是让你的思维从琐碎小事中解脱出来,大大提高了工作效率。 ? 下面就是他分享的4个tips。由于本文中涉及到的shell脚本过多,你可以去文末地址中查看所有脚本的源代码。...只需要事先写好几个shell脚本,就可以避免重复的机械劳动。 在这里强烈推荐iTerm 2,它比Mac自带的终端要强大得多,可以指定某个触发关键词执行某个相应的命令。 ?...你可以设置SSH端口转发,但是哪个端口对应哪个服务器?它们都在Docker容器中。...在每台远程机器上,使用cron运行一个脚本,监控日志并在检测到运行中断时向队列发送消息。然后在本地机器上运行一个服务来监控队列,并在收到消息时弹出警报。 ?

    75410

    4个Shell小技巧,帮你提高机器学习生产效率

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在机器学习的实践过程中,用好Shell能帮你很多节省时间。 最近,有位来自ETHZ的学生分享了一些Shell小技巧。...对程序员来说,这些技巧更重要的是让你的思维从琐碎小事中解脱出来,大大提高了工作效率。 ? 下面就是他分享的4个tips。由于本文中涉及到的shell脚本过多,你可以去文末地址中查看所有脚本的源代码。...只需要事先写好几个shell脚本,就可以避免重复的机械劳动。 在这里强烈推荐iTerm 2,它比Mac自带的终端要强大得多,可以指定某个触发关键词执行某个相应的命令。 ?...你可以设置SSH端口转发,但是哪个端口对应哪个服务器?它们都在Docker容器中。...在每台远程机器上,使用cron运行一个脚本,监控日志并在检测到运行中断时向队列发送消息。然后在本地机器上运行一个服务来监控队列,并在收到消息时弹出警报。 ?

    69620

    专题 | Python编写渗透工具学习笔记二

    目录 0x01编写一个conficker蠕虫 --使用Metasploit攻击Windows SMB服务 --编写Python脚本与Metasploit交互 --爆破SMB口令,远程执行进程 --整合代码...值得注意的是,在confickerExploit()函数中,脚本发送了一条指令在同一个任务(job)的上下文环境中(-j),不与任务进行即时交互的条件下(-z)利用对目标主机上的漏洞。...因此,我们的脚本还需要另一种也在Conficker 蠕虫中使用过的攻击方法。它需要用暴力攻击的方式破解SMB 用户名/密码,以此获取权限在目标主机上远程执行一个进程(psexec)。...对文件中的每个密码,函数都会生成一个用来远程执行(psexec)进程的Metasploit 脚本。...如果某个用户名/密码对是正确的,远程执行进程的代码就会运行回连一个命令行shell 到攻击者本机地址及对应的端口。 ? 04 整合代码 ? ? ? ?

    2.1K112

    linux之shell编程基本语法

    Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell。.../b.sh   ## 则,b.sh就在a.sh所在的bash进程空间中运行,而不是在a进程中的子进程中运行了。...总结: 1、a.sh中直接调用b.sh,会让b.sh在a所在的bash进程的“子进程”空间中执行 2、而子进程空间只能访问父进程中用export定义的变量 3、一个shell进程无法将自己定义的变量提升到父进程空间中去...4、“.”号执行脚本时,会让脚本在调用者所在的shell进程空间中执行 3、反引号赋值 A=`ls -la`    ## 反引号,运行里面的命令,并把结果返回给变量A A=$(ls -la)   ##...与$@区别 $* 和 $@ 都表示传递给函数或脚本的所有参数 ü 不被双引号" "包含时—— $* 和 $@ 都以$1  $2  … $n 的形式组成参数列表 ü 当它们被双引号" "包含时—— "$*

    83020

    如何在iOS应用程序中用Frida来绕过“越狱检测”?

    我们可以在Frida的shell中工作,并与我们的进程进行交互,或者我们还可以通过编写自己的JavaScript,来获取我们想要的数据。...dump类和方法信息 这项工作的目的是为了确定在DVIA的越狱检测中,负责验证我们的设备是否越狱的ViewController和function是哪个。...我们先来写一个基本的Frida脚本,来转储目标应用程序中存在的所有类和方法。在这里,我们将寻找与越狱相关所有的内容,以便我们能够在Frida的帮助下绕过越狱检测。...运行此脚本后,请在iOS应用程序中按 Jailbreak Test 1,你将看到Frida控制台中显示的返回值。 由于我们的设备已经越狱,所以它的返回值为0×1。...在后续的文章中我将带大家更深入的了解Frida脚本以及如何利用Frida的API和其它工具,来执行iOS和Android应用程序的安全性评估工作。

    2.4K61

    4个Linux小技巧,帮你提高机器学习生产效率

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在机器学习的实践过程中,用好Shell能帮你很多节省时间。 ? 下面就是他分享的4个tips。...由于本文中涉及到的shell脚本过多,你可以去文末地址中查看所有脚本的源代码。 抓取远程文件 当你在远程服务器上监视程序运行时,如果想把一个远程文件抓取到本地查看,通常你会怎么做?...你可以设置SSH端口转发,但是哪个端口对应哪个服务器?它们都在Docker容器中。...ngrok有个缺点是它一次只能允许一个会话,因此在使用前需要杀死上一个ngork进程。如果你忘记在另外一台服务器上杀死ngrok,可能会比较麻烦。...在每台远程机器上,使用cron运行一个脚本,监控日志并在检测到运行中断时向队列发送消息。然后在本地机器上运行一个服务来监控队列,并在收到消息时弹出警报。 ?

    61830

    翻译:Perl代码审计:Perl脚本中存在的问题与存在的安全风险

    perl在字符串”cat /usr/stats/jdimov“中找不到任何元字符,它运行cat程序,然后返回脚本。这个脚本看起来无害,但实际上可能被恶意攻击者利用。...现在假设我们将统计数据文件转换为格式良好的HTML页面,为了方便起见,我们决定将它们存储在显示它们的Perl脚本所在的目录中。...除非您完全信任要传递给eval()的代码源,否则不要执行eval$userinput之类的操作。这也适用于正则表达式中的/e修饰符,该修饰符使Perl在处理表达式之前对其进行解释。...在shell下或由web服务器运行的脚本的一个常见弱点是不安全的环境变量,最常见的是路径变量。...CGI脚本应该始终以尽可能低的权限运行。请注意,在setuid脚本中小心操作并不总能解决问题。某些操作系统的内核中存在bug,这使得setuid脚本本身就不安全。

    2.7K51
    领券