首页
学习
活动
专区
工具
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实现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

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

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

    1.5K10

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

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

    1.9K20

    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 表示发生错误。对错误错误码进行一对一的映射,这样有助于脚本调试。 #!

    53632

    解决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”。

    8.2K31

    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脚本学习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 的值。

    30820

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

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

    2.1K112

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

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

    2.2K61

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

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

    61530

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

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

    2.7K51

    Linux进程管理

    进程的启动方式: 手工方式:使用操作系统提供的用户接口 前台 后台 (&) 调度方式:按照预先指定的时间执行 at batch cron 前台进程: 指一个程序控制着标准输入/输出,程序运行时,shell...运行后台进程的方法是命令行最后加上 “&” 进程和作业的区别: 进程:操作系统的概念,由操作系统负责管理 作业:shell程序的概念,由shell程序负责管理 一个操作系统可以启动多个shell程序,...ps命令显示TTY代表什么? 答:tty代表字符终端。 ps命令的输出结果,哪个进程的状态为运行状态?哪个进程为休眠状态? 答:ps au命令的进程运行状态,用R表示;其余的都是休眠状态。...一个实际运行的系统一般会有多个守护进程运行,且各个系统运行的守护进程都不尽相同。 除非程序异常中止或者人为终止,否则它们将一直运行下去直至系统关闭。...脚本放在哪个目录下?脚本需要添加可执行属性吗? 答:脚本根据不同的周期放到不同的目录下,本题以月为周期执行,因此放入/etc/cron.monthly目录下。

    6.8K00

    linux shell指令大全整理

    linux shell指令 shell是一种脚本语言, 需要有编译器执行 bash是linux下默认的shell sh是unix下默认的shell ubuntubash和sh都可用 执行.../bin/bash #告诉系统用哪个解释器解释 通过bash执行, 不需要执行权限 bash test.sh 设置为可执行文件, 直接执行 chmod +x test.sh ..../test.sh 变量类型 局部变量 脚本定义, 仅在当前shell中有效, 其他shell不能访问 环境变量 所有程序, 包括shell启动的程序, 都能访问环境变量, c通过system()...函数执行的结果可以通过环境变量传递回来 shell变量 特殊变量, 比如传递给shell的参数 [外链图片转存失败,站可能有防盗链机制,建议将图片保存下来直接上传(img-YEeaQ6cj-1648294508220...'|cut -d' ' -f1 作业控制 命令 说明 ctrl+c 终止进程 ctrl+z 挂起一个进程 jobs 查看当前有多少在后台运行的命令 fg 将后台中的命令调值前台继续运行 bg 将一个在后台暂停的命令

    1.6K50

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

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

    74910

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

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

    68820

    linux之shell编程基本语法

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

    81820
    领券