
如果您在Windows系统中安装了Git Bash,但无法直接运行Shell脚本或执行Linux风格的命令脚本,则可能是由于脚本权限、路径格式、换行符或解释器声明不兼容所致。以下是解决此问题的步骤:
一、确保脚本具有可执行权限并使用Unix换行符
Git Bash基于MSYS2环境,依赖POSIX风格的文件权限和LF(Line Feed)换行符。Windows默认保存的脚本若含CRLF换行或缺少执行位,将导致“Permission denied”或“bad interpreter”错误。
1、用文本编辑器(如VS Code或Notepad++)打开脚本文件,将行尾序列设置为LF(Unix),而非CRLF(Windows)。
2、在Git Bash中进入脚本所在目录,运行:chmod +x script.sh,赋予执行权限。
3、验证权限:执行ls -l script.sh,确认输出中包含-rwxr-xr-x类标识。
二、使用正确的解释器路径并声明Shebang
Git Bash中的bash解释器位于MSYS2模拟环境中,需显式指向其内部路径,且脚本首行必须包含准确的Shebang,否则系统可能调用Windows cmd或错误解析路径。
1、在脚本第一行顶部插入:#!/usr/bin/env bash(推荐)或#!/bin/bash。
2、避免使用Windows绝对路径如C:/path/script.sh;改用Git Bash识别的路径格式,例如/c/Users/Name/script.sh。
3、检查解释器是否存在:在Git Bash中运行which bash,确认返回结果为/usr/bin/bash或类似路径。
三、通过bash命令显式调用脚本
当脚本因权限或环境变量问题无法直接执行时,可绕过执行位检查,强制由bash进程加载并解析脚本内容,适用于调试或临时运行场景。
1、在Git Bash中切换到脚本所在目录,或提供完整路径。
2、输入命令:bash script.sh(不加./前缀亦可)。
3、若脚本依赖当前工作目录下的其他文件,建议先使用cd /c/path/to/dir切换路径,再执行。
四、处理Windows路径与空格问题
Git Bash对含空格的Windows路径解析较敏感,若脚本路径或其中引用的文件路径含空格,未加引号会导致参数截断,引发“command not found”或“no such file”错误。
1、运行脚本时,对含空格的路径使用双引号包裹,例如:./”my script.sh”。
2、脚本内部调用Windows程序(如notepad.exe)时,路径应写为/c/Windows/System32/notepad.exe,而非C:\Windows\System32\notepad.exe。
3、若脚本中使用变量拼接路径,确保变量值前后无多余空格,并在引用时使用双引号,例如:”$FILE_PATH”。
五、禁用Windows Defender实时保护临时干扰
部分版本Windows Defender会拦截Git Bash启动的bash子进程或临时生成的shell解释行为,表现为脚本静默退出、无输出或报错“bash: fork: retry: Resource temporarily unavailable”。
1、右键任务栏Windows安全中心图标,选择“打开Windows安全中心”。
2、进入“病毒和威胁防护” → “管理设置”,暂时关闭实时保护(仅测试期间启用,操作后务必恢复)。
3、重新在Git Bash中运行脚本,观察是否恢复正常输出。

评论(0)