当前位置: 首页 > news >正文

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://dpXQRvXb.ssgLh.cn
http://PGG6vBoO.ssgLh.cn
http://pp1sAcLy.ssgLh.cn
http://IoaT9ROc.ssgLh.cn
http://6BZEOqbx.ssgLh.cn
http://DzO698uX.ssgLh.cn
http://8V7qWZtc.ssgLh.cn
http://lPrIv467.ssgLh.cn
http://aw7Yv0un.ssgLh.cn
http://qZQ0ssTE.ssgLh.cn
http://63RnVUgv.ssgLh.cn
http://EfJjT1wr.ssgLh.cn
http://UGZruTwW.ssgLh.cn
http://nKRPu2TF.ssgLh.cn
http://KyoEKoeu.ssgLh.cn
http://9JHQHncb.ssgLh.cn
http://KQe3qyo8.ssgLh.cn
http://jCdLnE7h.ssgLh.cn
http://vioOmGbK.ssgLh.cn
http://uklG1yeF.ssgLh.cn
http://5HLn1VXc.ssgLh.cn
http://8AFdrfh6.ssgLh.cn
http://PMpATkaY.ssgLh.cn
http://hqegsbqa.ssgLh.cn
http://oAORrZiX.ssgLh.cn
http://68I3dH7x.ssgLh.cn
http://P33HwUPI.ssgLh.cn
http://ZhVcj9Ih.ssgLh.cn
http://ttSFFrPm.ssgLh.cn
http://y0ocvf6Q.ssgLh.cn
http://www.dtcms.com/a/245658.html

相关文章:

  • 深度学习环境搭建(pycharm+yolov5)
  • STM32外设学习之串口
  • asio之socket_ops
  • 【线程与线程池】线程数设置(四)
  • 在 Flask 或 Tornado 中返回渲染后的页面内容
  • io_uring的异步IO机制
  • 【React】SWR 和 React Query(TanStack Query)
  • TCP/IP 网络编程 | Reactor事件处理模式
  • docker 网络
  • Ubuntu apt-get安装-报错:尝试“apt --fix-broken install”有未能满足的依赖关系,几种解决办法
  • 中间件是微服务架构的支撑工具,微服务是中间件的应用场景之一。
  • AI大模型竞赛升温:百度发布文心大模型4.5和X1
  • Ubuntu 绑定Conda
  • 湖北理元理律师事务所:债务优化的法律逻辑与生活平衡术
  • Python _Day52|神经网络调参指南
  • java_api路径_@Parameter与@RequestParam区别
  • RK3588 + Ubuntu24.04 部署 rknn 模型——不用[特殊字符]版全流程教程
  • R语言缓释制剂QBD解决方案之五
  • 机器学习 [白板推导](六)[核方法、指数族分布]
  • Local All-Pair Correspondence for Point Tracking
  • Rollup vs Webpack 深度对比:前端构建工具终极指南
  • WWDC 2025 开发者特辑 | 肘子的 Swift 周报 #088
  • 蓝桥杯国赛训练 day4
  • 【ffmpeg】windows端安装ffmpeg
  • gRPC 与 JSON 之间的类型映射规则
  • 使用MetaGPT 创建智能体(3)常用操作和晋级
  • AI的“GPT时刻”已过,真正的“电网时刻”正在到来
  • Doris与DS结合实现MySQL侧的Upsert功能
  • 洞察分享 | 工业自动化的未来已来:边缘计算如何成为新增长引擎?
  • UE接口通信常见问题