不同方式运行shell脚本的区别

2024-01-15

最近有人问我一个问题。执行shell脚本有哪些不同的方式,每种方式之间有什么区别?

我说我们可以在以下方法中运行 shell 脚本,假设 test.sh 是脚本名称,

  1. sh测试.sh
  2. ./test.sh
  3. 。 ./test.sh

我不知道 1 和 2 之间的区别。但通常在前 2 种方法中,执行时,它将生成新进程并运行相同的进程。而在最后一种方法中,它不会产生新的进程。相反,它在同一个中运行。

如果我错了,有人可以对此提出更多见解并纠正我吗?


sh test.sh

告诉要使用的命令sh执行test.sh.

./test.sh

告诉命令执行脚本。解释器需要在第一行定义,例如#!/bin/sh or #!/bin/bash. Note (谢谢凯尔塔 https://stackoverflow.com/questions/18331893/difference-between-different-ways-of-running-shell-script/18331933?noredirect=1#comment26906428_18331933)在这种情况下文件test.sh执行该命令的用户需要有执行权限。否则不会被执行。

在这两种情况下,所有使用的变量都会在脚本执行后过期。

. ./test.sh

获取代码源。也就是说,它执行它,并且执行的任何内容、定义的变量等都将保留在会话中。

欲了解更多信息,您可以查看执行 bash 脚本和获取 bash 脚本有什么区别? https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-scrip非常好的答案:

差异是:

  • 当你execute您正在打开的脚本new外壳、类型 新 shell 中的命令,将输出复制回当前 shell shell,然后关闭新的 shell。环境的任何改变都将需要 只在新的 shell 中有效,一旦新的 shell 生效就会丢失 关闭。

  • 当你source您在其中键入命令的脚本current壳。对环境的任何更改都会生效并保留在您当前的 shell 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同方式运行shell脚本的区别 的相关文章

随机推荐

  • 在 Android 应用程序中更改 HttpClient 的 OpenSSL 库

    我需要使用自定义 OpenSSL 库Http客户端在我的项目中 我已经编译了libcrypto so and libssl so对于 Android 并将文件放在 jniLibs 文件夹中 应用程序 Heartbleed Scanner 可
  • NodeJS 无限循环内存消耗

    我不知道这是否是 Node 或 V8 的错误 但如果我运行以下代码 节点进程会泄漏内存 GC 似乎从未启动 并且在几秒钟内它就消耗了 gt 1GB 的内存 这是意想不到的行为 我错过了什么吗 这是代码 for console log 1 1
  • WPF 中的身份验证和角色

    我正在WPF中做一个项目 我需要对用户进行身份验证并根据角色提供模块的可访问性 我有更好的方法在 WPF 中实现这一目标吗 这部分取决于您需要代码的安全程度 不过 对于所有用例 请使用模型 视图 视图模型模式 在每个 ViewModel 中
  • ContextWrapper 中的 NullPointer 异常

    我有一个名为 FileGeneration 的类 它扩展了 Activity在 FileGeneration 中我有一个名为 protected OutputStream openAndWriteFile Set the Context m
  • Internet Explorer 9 拖放 (DnD)

    有谁知道为什么以下网站拖放示例 以及许多其他在线教程 在 Internet Explorer 9 中不起作用 Chrome FireFox 和 Safari 都可以 http www html5rocks com tutorials dnd
  • Java 密钥库未通过 PKCS12 完整性检查,但 keytool 可以工作

    我有一些 PCKS12 证书 由两个环境以不同的方式提供服务 当我们上传到DEV环境时 java就可以解析它了 但它在产品上失败了 服务器是 Microsoft DotNet 解决方案 负责证书操作 生成的密钥库的密码为空 当我在 Wind
  • 如何修复 iframe 页面重新加载时的 chrome 闪烁

    在 iframe 中重新加载内容时 Chrome 会闪烁 是否可以通过任何方式避免这种情况 考虑 用 js 包装 a links 会产生一些神奇的效果 content html 中的元标记 我对 iframe 中的 html 有源代码控制
  • 使用“Powered By Chrome”和操作菜单打开自定义 WebView

    我最近注意到 当在一些 Android 应用程序中打开链接时 它们具有相似的外观和感觉 并且自定义操作菜单在自定义菜单下方带有 由 Chrome 提供支持 这里面使用了什么组件还是仍然是 ChromiumWebView 希望我希望将它们添加
  • R 中按特定年份聚合

    如果这个问题已经在 SO 上得到处理 我深表歉意 但我似乎还无法找到快速的解决方案 我正在尝试按特定年份聚合数据集 我的数据框包含 10 年期间每小时的气候数据 head df day month year hour rain temp p
  • 如何解决错误“模块 umap 没有属性 UMAP”..我尝试安装并重新安装 umap 但对我不起作用

    AttributeError module umap has no attribute UMAP 我尝试安装和重新安装不同的 umap 和 umap learn 库 但没有任何效果 To use UMAP你需要安装umap learn no
  • System.Data.OleDb.OleDbException - sql 中的语法错误

    我在这个 SQL 中有一个语法错误 string sSql SELECT OxygenTankInDetailTBL HBedNameID OxygenTankInDetailTBL LocationHB FROM OxygenTankIn
  • 如何使用 vscode 获取用户输入(无 html)

    Javascript 新手 我想知道如何在不使用 HTML 而仅使用 vscode 的情况下获取用户输入 有什么简单的方法可以将用户输入保存在变量中吗 就像是 var name input What is your name var nam
  • VB.NET 列表中的 If-Else

    我只是想知道 VB NET 中是否有一种方法可以查找列表中是否存在特定值或可以在我的 If else 条件中使用的值 我现在正在做的是使用这个 If ToStatus 1CE Or ToStatus 2TL Or ToStatus 2PM
  • 暂停函数,直到按下回车键为止 JavaScript

    JavaScript 新手 我知道这可能非常简单 但我无法弄清楚 我想执行一个函数 在函数中间暂停并等待用户按下 enter 键 这将允许函数再次继续 或者将调用另一个函数来触发 function appear document getEl
  • CouchDB 中的过滤和更新功能?

    这些功能是什么 我在哪里可以阅读有关它们如何工作的信息 CouchDB 权威指南没有对此进行解释 很奇怪 来自 CouchDB 权威指南 还有其他设计文档 正在引入的功能 撰写本文时 包括 update 和 filter 我们在这里没有深入
  • 在没有 Rails、ActiveRecord 或任何带有 RSpec 的数据库的情况下使用 FactoryGirl

    我想知道是否有人知道是否可以在没有上述任何先决条件的情况下使用 FactoryGirl 我想在驱动移动和 Web 甚至 API 的 UI 自动化测试时使用它来生成动态测试数据 我知道我可以创建一些自定义帮助器类 方法并使用 getter 和
  • 如何在 Rust println 中直接使用函数返回值

    Rust 允许以这种方式格式化打印变量 fn main let r f64 rand random println r 但这不起作用 fn main println rand random 它显示这个错误 31 println rand r
  • 类型错误:“这个...”不是一个函数[重复]

    这个问题在这里已经有答案了 我定义hostService如下 场景是我先打电话hostService addListener 在控制器中 那么控制器可以通过以下方式发出消息 rootSceop emit hostService应该可以处理它
  • navigator.geolocation.getCurrentPosition 有时有效有时无效

    所以我使用 navigator geolocation getCurrentPosition jammy 有一个非常简单的 JS document ready function business locate people locate c
  • 不同方式运行shell脚本的区别

    最近有人问我一个问题 执行shell脚本有哪些不同的方式 每种方式之间有什么区别 我说我们可以在以下方法中运行 shell 脚本 假设 test sh 是脚本名称 sh测试 sh test sh test sh 我不知道 1 和 2 之间的