Windows下Eclipse CDT运行.sh脚本遇CreateProcess error=193问题求助
解决Windows下Eclipse CDT运行Shell脚本报错CreateProcess error=193的问题
错误原因
这个错误的核心逻辑很直白:Windows系统不原生支持Shell脚本(.sh文件)的直接执行。当你让Eclipse直接调用runall.sh时,Windows会把它当成Win32可执行程序来启动,但.sh本质是文本格式的命令集合,没有Win32程序的执行入口,所以就抛出了CreateProcess error=193, %1 is not a valid Win32 application的报错。
成功运行脚本的必要条件
要让Windows能执行.sh脚本,必须满足两个核心要求:
- 得装一个Shell脚本解析环境,比如Cygwin、Git Bash或者WSL(Windows子系统),它们能识别并执行.sh里的命令逻辑。
- 不能让Eclipse直接调用.sh文件,而是要让Eclipse先启动Shell环境的执行程序(比如bash.exe),再把.sh脚本作为参数传递给它执行。
用Cygwin配置运行runall.sh的步骤
下面是一步步的实操流程:
安装Cygwin并配齐必要组件
下载Cygwin安装器后,在组件选择环节,一定要勾选bash(Shell环境核心)和coreutils(基础Linux命令工具,比如echo、mkdir这些),避免脚本里的命令无法执行。安装完成后记好Cygwin的安装路径,比如默认的C:\cygwin64\(64位)或C:\cygwin\(32位)。在Eclipse中配置外部工具
- 打开Eclipse,点击顶部菜单栏的
Run > External Tools > External Tools Configurations。 - 在左侧列表选中
Program,点击左上角的新建按钮,创建一个新配置。 - 在
Main标签页:- Location:点击
Browse File System,找到Cygwin安装目录下的bin\bash.exe(比如C:\cygwin64\bin\bash.exe)。 - Arguments:填入
-c "${workspace_loc:/tcas/scripts/runall.sh}",这里的${workspace_loc:...}是Eclipse的内置变量,会自动替换成脚本的绝对路径;如果变量不好用,直接填脚本的完整Windows路径也可以,比如-c "H:\Java Workplace\tcas\tcas\scripts\runall.sh"。 - Working Directory:建议设置为脚本所在的目录,比如
${workspace_loc:/tcas/scripts},这样脚本里的相对路径(比如../source/tcas.exe)能正确解析。
- Location:点击
- 切换到
Environment标签页,可以添加PATH变量,把Cygwin的bin目录(比如C:\cygwin64\bin)加进去,确保脚本里的命令能被找到。
- 打开Eclipse,点击顶部菜单栏的
调整脚本的换行符格式
Windows下文本文件默认是CRLF换行,而Shell脚本需要LF换行。在Eclipse里打开runall.sh,点击右下角的Windows (CRLF),切换成Unix (LF),避免bash执行时出现奇怪的语法错误。测试运行
配置完成后点击Run按钮,Eclipse就会调用Cygwin的bash来执行你的runall.sh脚本,输出也会正常写入到../outputs/t1中。
内容的提问来源于stack exchange,提问作者Nasrin Mottaghi
相关产品推荐
相关产品推荐

