已关闭
两个实验环境脚本的 CRLF 行尾导致 Bash 无法加载 #771
KaranocaVe创建于 15 天前关闭于 5 天前
15 天前 关联了pull request:修复两个实验环境脚本的 CRLF 行尾问题
15 天前 修改了issue 的描述
chenmingyu
15 天前 评论:
15 天前 评论:
尊敬的开发者您好,您提出的问题已收到,待内部评估后反馈,感谢您的支持


chenmingyu
15 天前 评论:
15 天前 评论:
您好,感谢反馈!
经核对,这两个实验的 notebook 在执行前已内置脚本行尾归一化(会将实验目录下所有脚本统一为 LF),正常使用流程不会触发您描述的问题,实际运行可正常通过。
如您在其他场景下遇到具体报错,欢迎附上报错信息与截图,我们会进一步跟进。
如果有其他问题,欢迎来issues中讨论 。



KaranocaVe
11 天前 评论:
11 天前 评论:
明白 notebook 路径会先统一行尾。本次补充的场景是按实验 README 构建后,在生成的 custom OPP 包里直接 source scripts/env_custom_opp.sh:CRLF 脚本 bash -n 报 unexpected end of file,source 报 $'\r': command not found;转换为 LF 后两者均通过。也就是说 notebook 执行路径可规避,但直接 Bash source 仍可复现。若这一直接使用方式不受支持,请告知。


chenmingyu
5 天前 评论:
5 天前 评论:
尊敬的开发者,您好!
感谢您提出的问题,该问题虽然不会对正常课程造成影响,但确实是隐藏的代码bug,您关联的pr已合入,感谢您的贡献!
该issue即将关闭,如果对课程有其他问题,欢迎在issue中讨论。


5 天前 issue状态由 进行中 改变为 已完成
5 天前 关闭了 issue
5 天前 添加了label:resolved
两个实验环境脚本的 CRLF 行尾导致 Bash 无法加载
影响文件
contrib/tutorials/data_structures_compute/04_reduce_priority_queue_heap/src/reduce_lab/scripts/env_custom_opp.shcontrib/tutorials/data_structures_compute/07_sort_for_moe_fusion/src/moe_sort_lab/scripts/env_custom_opp.sh两个实验的 README 都要求在构建 runner 前 source 对应环境脚本。
问题
这两个脚本的每一行都使用 CRLF。Bash 将
if块行尾的回车符并入命令,导致bash -n均返回 2。source 脚本时会出现$'\r': command not found,并在设置ASCEND_CUSTOM_OPP_PATH前退出。将相同脚本内容转换为 LF 后,语法检查可通过,生成的
set_env.bash可加载,custom OPP 路径也能正确导出。这是文档构建入口上的确定性失败,不只是行尾格式差异。预期与实际
build_ops.sh生成本地包后,sourcescripts/env_custom_opp.sh成功,为 runner 配置环境。修复
仅将两个
env_custom_opp.sh的行尾从 CRLF 转为 LF,不修改命令、路径或环境行为。Validation
验证
基线
git ls-files --eol显示两个目标脚本都是i/crlf w/crlf;04 脚本有 26 行 CRLF,07 脚本有 25 行 CRLF。在包含 stub
set_env.bash的生成包 fixture 中:bash -n scripts/env_custom_opp.shset -e; source scripts/env_custom_opp.sh$'\r': command not found,未导出环境变量失败发生在 CANN 或 NPU 操作之前,无需设备即可复现。
修复后
bash -nset_env.bash,导出预期 custom OPP 路径build_runner.sh去掉 CRLF 标记后,修复前后的脚本字节一致;没有命令或路径变化。
Patch 与当前版本检查
master上,git apply --check --whitespace=error-all fix.patch通过,两个目标文件仍为 CRLF。bash -n,git diff --check通过;变更仅为两个目标文件的行尾转换。git apply --reverse --check fix.patch通过。以上检查覆盖 shell 启动流程,不代表算子编译通过。无需设备即可复现和验证此问题。
本次提交前复核
cann/cann-learning-hub/master@793a252c74750a3e49f3f1749f9cb975a19e28dc;git apply --check --whitespace=error-all fix.patch通过,patch 仅将两个目标脚本从 CRLF 转为 LF。bash -n,git diff --check通过。关联 PR: https://gitcode.com/cann/cann-learning-hub/merge_requests/1092