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

Linux shell进阶教程:使用.调用子脚本详解

./1.sh的行为等同于sh 1.shbash 1.sh,即:

会启动一个新的子进程来执行脚本,不共享父 Shell 的变量和函数(除非变量被export)。


🔍 详细解释

前提条件:
  • 文件1.sh必须具有可执行权限(可通过chmod +x 1.sh设置);
  • 文件开头有正确的Shebang 行(如#!/bin/bash#!/bin/sh)。
执行机制:

当你运行:

./1.sh

系统会:

  1. 根据1.sh第一行的 Shebang(例如#!/bin/bash)决定用哪个解释器;
  2. 启动一个新进程(如/bin/bash ./1.sh)来执行该脚本;
  3. 这个新进程是当前 Shell 的子进程,拥有独立的环境。

🔄 与其它方式对比

调用方式是否新建进程变量是否共享函数是否共享依赖 Shebang需要可执行权限
./1.sh✅ 是❌ 否(仅export❌ 否✅ 是✅ 是
sh 1.sh✅ 是❌ 否(仅export❌ 否❌ 否(强制用 sh)❌ 否
bash 1.sh✅ 是❌ 否(仅export❌ 否❌ 否(强制用 bash)❌ 否
source 1.sh❌ 否✅ 是✅ 是❌ 否❌ 否
. 1.sh❌ 否✅ 是✅ 是❌ 否❌ 否

💡 注意:

  • 如果1.sh没有 Shebang,./1.sh可能会失败或使用默认 shell(取决于系统);
  • sh 1.sh忽略 Shebang,强制用sh解释器。

✅ 示例说明

假设parent.sh内容如下:

#!/bin/bashname="Alice"./child.sh# 或 sh child.shecho"Parent:$name"

child.sh内容:

#!/bin/bashecho"Child:$name"name="Bob"

输出:

Child: # (空!因为 name 未 export) Parent: Alice # 父脚本变量未被修改

但如果改成:

exportname="Alice"./child.sh

child.sh中能读到Alice,但修改name="Bob"不会影响父脚本


⚠️ 常见误区

❌ “./1.shsource 1.sh差不多?”
✅ 完全不同!前者是“运行一个程序”,后者是“把代码粘贴到当前 shell 执行”。


✅ 总结

  • ./1.shbash 1.sh(如果 Shebang 是#!/bin/bash
  • 总是启动新进程不共享非 export 变量不影响父 Shell 状态
  • 标准的、安全的脚本执行方式,适用于大多数场景(如启动服务、运行任务)。

📌 记住:
./xxx是“执行一个程序”,. xxx(带空格)是“加载一段代码”—— 名字相似,行为天壤之别!

http://www.cnnetsun.cn/news/37320.html

相关文章:

  • Linux shell 进阶教程:单引号会禁止变量展开
  • 如何让AI工作流真正理解你的业务场景?
  • 如何快速安装Sionna:面向新手的完整配置教程
  • SketchUp STL插件实战手册:从建模到3D打印的完整流程
  • 零基础玩转AI音乐风格识别:Magenta实战指南
  • 零基础玩转智能配色:Color Thief色彩提取实战指南
  • 64K上下文新标杆:LongAlign-13B-64k如何重塑长文本处理范式
  • 仓颉编程语言完整入门指南:从零开始快速上手
  • 37、KDE 常用小部件介绍
  • 智能决策引擎:制造业流程优化的AI革命
  • Python性能测试终极指南:pyperf模块完整教程
  • ComfyUI效率节点终极完整教程:一键部署方法与工作流程优化指南
  • Flink SQL Top-N 深度从“实时榜单”到“少写点数据”
  • IndraDB图数据库终极指南:Rust技术栈的架构革命
  • 如何用影刀RPA自动化采集小红书作品评论?支持"视频图文+折叠评论"采集
  • 5分钟快速上手NI-VISA:虚拟仪器通信终极指南
  • 5个技巧让SSH连接像钢铁侠战衣一样坚不可摧
  • 毕业论文之战:选择通用的“速成写手”,还是专业的“深度宏智树AI”?
  • AI写论文终极测评:宏智树AI凭何成为“学术救星”中的隐藏冠军?
  • PPT模板哪家好:2025年12月深度测评排名前五推荐
  • GB28181协议终极测试指南:自动化工具完整解决方案
  • openpnp - 确定自动换刀坐标的辅助工装
  • 71、深入探索:Python C API 的扩展与嵌入
  • Ultimate Vocal Remover终极安装指南:全平台快速配置与性能优化
  • Ubuntu 20.04终极指南:快速解决L515相机RealSense SDK兼容性问题
  • 济南市发明专利和实用新型专利的根本区别
  • 济南市发明专利快速授权的三种途径
  • 36、Linux系统技术指南:从基础操作到高级配置
  • GLM-4.5-Air智能体模型终极部署指南:从零到高效推理
  • Hugo Academic CV 终极指南:5分钟打造专业学术简历