gpt4 book ai didi

windows - Bash - 使用 CRLF 行结尾无缝运行脚本

转载 作者:IT老高 更新时间:2023-10-28 12:46:18 26 4
gpt4 key购买 nike

我正在使用 VM(在我的例子中只是 boot2docker)在 Windows 主机上运行 docker 容器。为方便起见,我的源文件是从主机文件系统映射的,因此文本文件默认使用 Windows 样式的 CRLF 行结尾而不是 Unix 样式的 LF 结尾。

当我尝试从 docker 容器运行一些 .sh 文件时,我会得到一个错误

bash: ./script.sh: /bin/bash^M: bad interpreter: No such file or directory

有没有办法告诉 bash/sh 解释器自动将\r\n 转换为\n 并运行文件?

当然,我可以像这样 cat script.sh | 做一些流水线操作tr -d "\r"| sh 甚至为此创建一个别名,但它不会涵盖一个脚本包含另一个脚本的情况。

到目前为止,我发现的唯一可接受的解决方案是将 Git 设置为以 UNIX 格式 check out 源文件。

最佳答案

您可以在根文件夹中的 repo 中提交一个 .gitattributes 文件,以自动告诉 Git 在 checkout 时将 LF 行结尾应用于所有 .sh 文件,即使在 Windows 上也是如此。这样,您或其他开发人员就不必记住在您克隆存储库的每台机器上配置 Git。

# Set line endings to LF, even on Windows. Otherwise, execution within Docker fails.
# See https://help.github.com/articles/dealing-with-line-endings/
*.sh text eol=lf

关于windows - Bash - 使用 CRLF 行结尾无缝运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com