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

linux 运行脚本命令区别

文章目录

  • chmod 赋予权限运行
  • sh script.sh
    • 适用场景
  • bash script.sh
  • source 或 . 脚本

chmod 赋予权限运行

chmod +x script.sh  # 赋予执行权限
./script.sh         # 直接执行
  • 创建新的子进程,不会影响当前 shell 的环境变量。
  • #!(Shebang) 指定的解释器(如 #!/bin/bash)决定了脚本执行的 shell 类型,与当前 shell 无关

sh script.sh

  • 不会创建新的 shell 进程,而是 调用 /bin/sh 解释器执行。
  • 不受 Shebang (#!) 影响,总是由 /bin/sh 执行,即使 script.sh 里 #!/bin/bash 也会忽略。
  • 不会影响当前 shell 的环境变量。

适用场景

  • 在未知环境下执行脚本(比如不确定目标环境是否安装了 Bash)。
    • sh 可能是 dash(Debian/Ubuntu)或 bash(CentOS)等的软链接,语法可能有所不同。
    • 如果脚本包含 bash 特有语法(如 [[ 条件判断),可能会报错。
  • 运行不需要改变当前 shell 环境的简单脚本。

bash script.sh

  • 显式使用 bash 解释器(不管 Shebang 是什么)。
  • 创建一个新的 Bash 进程,不会影响当前 shell 环境。

source 或 . 脚本

source script.sh  # 或者
. script.sh
  • 不会创建新进程,而是 在当前 shell 中执行。
  • 可以修改当前 shell 的环境变量(如 export PATH)。
  • Shebang (#!) 无效,因为脚本的每一行代码都直接在当前 shell 执行。

相关文章:

  • Pinecone数据库介绍、Milvus数据库介绍
  • 基于FastAPI与Kimi AI的智能聊天应用开发实践
  • 6. 使用VUE实现前端页面的分级嵌套
  • Spring Boot集成阿里云OSS:对象存储实战指南
  • 【学习】数字经济下数据价值化的内在逻辑与关键挑战
  • Vue的实例
  • SpringBoot整合Log4j2进行日志记录异步写入日志文件
  • 《深度剖析Android 12 SystemUI锁屏通知布局亮屏流程:从源码到实现》
  • 0323-B树、B+树
  • Mybatis-plus配置动态多数据源
  • Linux系统之yum本地仓库创建
  • EMC知识学习一
  • 【android】补充
  • Jenkins 配置python项目和allure
  • 【HTML 基础教程】HTML 元素
  • 逼用户升级Win11,微软开始给Win10限速
  • 使用 langchain_deepseek 实现自然语言转数据库查询SQL
  • LXC 容器技术简介
  • rbpf虚拟机-验证器(verifier)
  • iOS:GCD信号量、同步、异步的使用方法
  • webstack wordpress模板/北京seo多少钱
  • 小公司网站建设费用/重庆网站排名推广
  • 余姚网站推广/东莞疫情最新通告
  • 哈尔滨建设网官方网站/网络营销swot分析
  • 做电脑网站步骤/域名注册商有哪些
  • 独立网站如何做/企业百度推广