使用Windows修改GCS脚本后,创建GCP Dataproc集群遇/bin/bash^M错误
GCP Dataproc集群初始化脚本错误解决
错误信息
/tmp/dataproc-agent1435981490491006254/initialize-env.sh: /etc/google-dataproc/startup-scripts/dataproc-initialization-script-0: /bin/bash^M: bad interpreter: No such file or directory
问题原因
你在Windows机器上修改脚本后,脚本被添加了Windows特有的CRLF(\r\n)换行符。而Dataproc集群基于Linux系统,默认使用LF(\n)换行符,脚本里的^M就是Windows换行符中的\r,导致系统无法正确识别/bin/bash解释器路径。
解决方法
方法1:在Windows编辑器中转换换行符
用支持换行符转换的文本编辑器处理脚本后重新上传到GCS:
- VS Code:打开脚本后,点击右下角的「CRLF」选项,选择「LF」,保存文件后上传至GCS存储桶。
- Notepad++:打开脚本后,依次点击「编辑」→「文档格式转换」→「转换为UNIX格式」,保存后上传。
方法2:在Linux环境中修复脚本
如果脚本已上传到GCS,可在Linux机器上执行以下命令转换:
# 从GCS下载脚本 gsutil cp gs://你的存储桶路径/脚本名.sh . # 转换为Linux换行符格式 dos2unix 脚本名.sh # 重新上传回GCS gsutil cp 脚本名.sh gs://你的存储桶路径/脚本名.sh
若集群已创建但初始化失败,可登录节点后直接修复脚本:
sed -i 's/\r$//' /etc/google-dataproc/startup-scripts/dataproc-initialization-script-0
修复后重新运行初始化流程即可。
内容的提问来源于stack exchange,提问作者sidharth vijayakumar
相关产品推荐
相关产品推荐

