Linux中source和bash的区别

在Linux中,sourcebash(或sh)都是用于执行Shell脚本的命令,但它们在执行方式和作用域上有显著区别:

在这里插入图片描述


1. 执行方式

  • bash script.sh(或sh script.sh

    • 启动一个新的子Shell进程来执行脚本。
    • 脚本中的变量、函数、别名等仅在子Shell中生效,父Shell环境不会受到影响
    • 脚本执行完毕后,子Shell退出,所有修改随之消失。
  • source script.sh(或. script.sh

    • 直接在当前Shell环境中执行脚本,不创建子Shell。
    • 脚本中对环境变量、路径、函数等的修改会直接影响当前Shell会话
    • 常用于加载配置文件(如~/.bashrc)或更新当前环境。

2. 作用域对比

场景bash script.shsource script.sh
变量定义仅在子Shell中有效当前Shell中生效
修改PATH等环境变量不影响当前Shell直接影响当前Shell
执行后退出子Shell终止,修改丢失修改持久保留

3. 典型用途

  • bash
    适合运行独立脚本,无需影响当前环境(例如工具脚本、测试任务)。

  • source
    需要修改当前Shell状态时使用,例如:

    source ~/.bashrc  # 重新加载配置
    source venv/bin/activate  # 激活Python虚拟环境
    

4. 其他区别

  • 权限要求
    bash script.sh需要脚本有可执行权限(或通过解释器显式调用),而source不需要。
  • 调试
    bash -x script.sh可以调试脚本,而source的调试需结合set -x

示例验证

假设脚本test.sh内容:

#!/bin/bash
export VAR="hello"
  • 执行bash test.sh后,echo $VAR输出为空(变量未保留)。
  • 执行source test.sh后,echo $VAR输出hello(变量已生效)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决文明6 内存相关内容报错EXCEPTION_ACCESS_VIOLATION

我装了很多Mod,大约五六十个,经常出现内存读写异常的报错。为了这个问题,我非常痛苦,已经在全球各大论坛查询了好几周,终于在下方的steam评论区发现了靠谱的解答讨论区。 https://steamcommunity.com/app/289070/dis…

IIS 实现 HTTPS:OpenSSL证书生成与配置完整指南

参考 IIS7使用自签名证书搭建https站点(内网外网都可用) windows利用OpenSSL生成证书,并加入IIS 亲测有效 !!! IIS 配置自签名证书 参考:IIS7使用自签名证书搭建https站点(内网外网都可用) 亲测可行性,不成功。 IIS 配置OpenSSL 证书 √ OpenSSL 下载 https://slp…

Spark DAG、Stage 划分与 Task 调度底层原理深度剖析

Spark DAG、Stage 划分与 Task 调度底层原理深度剖析 核心知识点详解 1. DAG (Directed Acyclic Graph) 的构建过程回顾 Spark 应用程序的执行始于 RDD 的创建和一系列的转换操作 (Transformations)。这些转换操作(如 map(), filter(), reduceByKey() 等&#xff…

关于阿里云-云消息队列MQTT的连接和使用,以及SpringBoot的集成使用

一、目的 本文主要记录物联网设备接入MQTT以及对接服务端SpringBoot整个的交互流程和使用。 二、概念 2.1什么是MQTT? MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布、订阅信息传输协议。可以在不可靠的网络环境中进行扩展,适用…

车载功能框架 --- 整车安全策略

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

HarmonyOS5 让 React Native 应用支持 HarmonyOS 分布式能力:跨设备组件开发指南

以下是 HarmonyOS 5 与 React Native 融合实现跨设备组件的完整开发指南,综合关键技术与实操步骤: 一、分布式能力核心架构 React Native JS 层 → Native 桥接层 → HarmonyOS 分布式能力层(JavaScript) (ArkTS封装) (设备发现/数据同步/硬件…

Unity打包到微信小程序的问题

GUI Error: Invalid GUILayout state in FlowchartWindow view. Verify that all layout Begin/End calls match UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 第一个问题可以不用管,这个不影响,这个错误,但是可以正常运行&a…

Hugging face 和 魔搭

都是知名的模型平台,二者在定位、功能、生态等方面存在区别,具体如下: 一、定位与背景 Hugging Face: 定位是以自然语言处理(NLP)为核心发展起来的开源模型平台,后续逐步拓展到文本、音频、图…

React 第六十一节 Router 中 createMemoryRouter的使用详解及案例注意事项

前言 createMemoryRouter 是 React Router 提供的一种特殊路由器,它将路由状态存储在内存中而不是浏览器的 URL 地址栏中。 这种路由方式特别适用于测试、非浏览器环境(如 React Native)以及需要完全控制路由历史的场景。 一、createMemoryRouter 的主要用途 测试环境:在…

透视黄金窗口:中国有机杂粮的高质量跃迁路径

一、行业概览:蓝海市场背后的结构性红利 伴随全民健康意识提升和中产阶层的扩大,中国有机杂粮市场正迎来新一轮结构性红利期。根据《健康中国3.0时代:粗粮食品消费新趋势与市场增长极》数据显示,2020 年中国有机杂粮市场规模约 3…

实现p2p的webrtc-srs版本

1. 基本知识 1.1 webrtc 一、WebRTC的本质:实时通信的“网络协议栈”类比 将WebRTC类比为Linux网络协议栈极具洞察力,二者在架构设计和功能定位上高度相似: 分层协议栈架构 Linux网络协议栈:从底层物理层到应用层(如…

OpenCV CUDA模块图像变形------对图像进行上采样操作函数pyrUp()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 函数用于对图像进行 上采样操作(升采样),是 GPU 加速版本的 高斯金字塔向上采样(Gaussian Pyrami…

勒贝格测度、勒贝格积分

又要接触测度论了。随着随机规划的不断深入,如果涉及到证明部分,测度论的知识几乎不可或缺。 测度论的相关书籍,基本都非常艰涩难读,对于非数学专业出身的人入门非常不易。从十几年前开始,我很难把测度论教材看到超过…

UE5 学习系列(一)创建一个游戏工程

这个系类笔记用来记录学习 UE 过程中遇到的一些问题与解决方案。整个博客的动机是在使用 AirSim 中遇到了不少性能瓶颈,因此想要系统性地去学一下 UE ,这个系列博客主要是跟着 B 站大佬 欧酱~ 和 GenJi是真想教会你 的系列视频 《500 分钟学会…

Nginx 负载均衡、高可用及动静分离

Nginx 负载均衡、高可用及动静分离深度实践与原理剖析 在互联网应用架构不断演进的今天,如何高效地处理大量用户请求、保障服务的稳定性与性能,成为开发者和运维人员面临的关键挑战。Nginx 作为一款高性能的 Web 服务器和反向代理服务器,凭借…

stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序)

资料下载地址:stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序) 程序实现功能: 程序基于stm32芯片实现了控制LED灯亮灭、按键控制、串口通信、电机控制、温湿度数据采集、超声波测距、LCD显示屏显示内容这几个功能,并用proteus8进行仿…

新一代python管理工具--uv

uv 工具全方位介绍 起源与背景 uv 是由 Astral(pipx 作者)团队用 Rust 语言开发的新一代 Python 包和环境管理工具。其目标是解决传统 pip/venv/conda 在依赖解析慢、环境隔离繁琐、命令复杂等方面的痛点,为现代 Python 项目提供极速、自动…

路由交换技术-思科拓扑搭建

配置流程 1.搭建网络拓扑图。 2.规划配置IP地址,内网配置为192.168.1.0和192.168.2.0网段。 3.划分vlan10,vlan20,vlan30。 4.配置静态、动态路由。配置路由器Router7,使内外网互通。 5.配置链路聚合。通过链路聚合技术&#xff…

清华大学视觉空间智能新突破!Spatial-MLLM:提升多模态大语言模型的视觉空间智能能力

作者:Diankun Wu, Fangfu Liu, Yi‑Hsin Hung, Yueqi Duan 单位:清华大学 论文标题:Spatial-MLLM: Boosting MLLM Capabilities in Visual-based Spatial Intelligence 论文链接:https://arxiv.org/pdf/2505.23747 项目主页&a…

AI与机器学习ML:利用Python 从零实现神经网络

自线性回归以来,我们已经涵盖了很多领域。在本期中,我们将开始了解神经网络内部工作原理的旅程*。* 如果一个人试图了解任何使用生成式 AI 的工具、应用程序、网站或其他系统的内部工作原理,那么掌握神经网络的架构至关重要。在这个故事中&a…