You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Shell中无执行权限脚本为何可通过source命令正常运行?

Shell脚本两种执行方式的权限差异底层原因

两种运行模式的底层逻辑完全不同,对应权限要求也存在本质区别:

  • ./helloworld.sh 执行模式

    该方式属于外置独立程序执行,操作系统会创建全新的子进程,调用exec系统调用尝试运行该脚本文件。exec系统调用的强制要求是目标文件必须开启执行权限(x位),你当前的文件权限为-rw-rw-r--,三类用户(所有者、同组用户、其他用户)均未分配x权限,因此会被系统直接拦截报错。
    该模式下会读取脚本首行的shebang(如#!/bin/bash)指定的解释器运行,脚本内的环境变量变更不会影响父Shell的运行环境。
  • . helloworld.sh 执行模式

    这里的.是Shell内置source命令的简写,本质是当前Shell进程直接读取文件内容逐行解析执行,不会创建新子进程,也不会调用exec系统调用。该模式仅要求当前操作用户对脚本拥有*可读权限(r位)*即可,不需要执行权限,你当前的权限配置完全满足读权限要求,因此可以正常运行。
    该模式下不会读取shebang指定的解释器,直接用当前Shell解析执行,脚本内的环境变量变更会直接修改当前Shell的运行环境。

内容的提问来源于stack exchange,提问作者Harseo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:45:00