Windows下通过Cygwin mintty.exe运行Shell脚本无法加载runcoms求助
解决Cygwin脚本未加载配置文件的问题
核心原因
直接通过Windows资源管理器关联bash/mintty运行.sh脚本时,bash会以非交互式、非登录模式启动,默认不会加载.bash_profile/.profile/.bashrc这类配置文件,导致PATH未包含Cygwin的bin目录,进而调用了Windows自带的find命令。
解决方案
方案1:在脚本中强制加载配置文件
在你的finder.sh开头(#!/bin/bash之后)添加一行,手动加载配置文件:
#!/bin/bash source ~/.bash_profile # 加载PATH配置 find . read
这种方式最简单,不管bash以什么模式启动,都会读取你的PATH设置。
方案2:修改bash的调用参数,强制以登录模式运行
修改.sh文件的默认打开方式,让bash以登录模式启动(会自动加载.bash_profile):
- 右键点击.sh文件 → 打开方式 → 选择其他应用 → 更多应用 → 在这台电脑上查找其他应用
- 找到
C:\Users\Bo\AppData\Local\Programs\cygwin64\bin\bash.exe,点击「打开」时按住Shift键,进入高级关联设置 - 创建一个快捷方式,目标设置为:
其中C:\Users\Bo\AppData\Local\Programs\cygwin64\bin\bash.exe -l "%1"-l参数表示以登录模式启动bash,%1是传入的脚本路径。
方案3:通过mintty正确启动脚本(保持窗口打开)
如果你想用mintty运行脚本并保持窗口打开,创建一个mintty的快捷方式,目标设置为:
C:\Users\Bo\AppData\Local\Programs\cygwin64\bin\mintty.exe -h always /bin/bash -l -c 'cd "$(cygpath -u "%1")" && ./"$(basename "%1")"'
参数说明:
-h always:保持窗口打开,即使脚本运行完成/bin/bash -l:以登录模式启动bash,加载配置文件cygpath -u "%1":将Windows格式的脚本路径转换为Cygwin的Unix格式- 后续命令切换到脚本所在目录并运行脚本
方案4:设置BASH_ENV环境变量
在Windows的用户环境变量中添加BASH_ENV,值为Cygwin格式的配置文件路径:
/home/Bo/.bashrc
bash在非交互式模式下,会自动读取BASH_ENV指定的文件,从而加载PATH配置。
内容的提问来源于stack exchange,提问作者Bo Beep
相关产品推荐
相关产品推荐

