Loc*_*ock 7 unix bash line-endings docker
我的团队正在构建我们的第一个基于 docker 的 .NET 应用程序,并编写了一个 bash 脚本,该脚本作为构建过程的一部分运行(来自 dockerfile)。我们都使用 Windows 10 机器。
当 bash 脚本运行时,它会抛出错误:
/bin/bash^M: bad interpreter: No such file or directory。
根据我的研究,这似乎是因为行结尾是 Windows 行结尾,而不是基于 UNIX。我能够通过使用 Notepad++ 转换结尾来解决此问题,并且脚本运行良好。然而,当我进入 SourceTree 查看更改的文件时,它短暂地显示为更改的文件(有人说它无法检测更改)。一旦我单击阶段文件按钮,它就消失了,就好像没有任何更改的文件一样。
我该如何解决这个问题?我可以在 GIT 中看到行结尾设置,但不确定正确的设置应该是什么。
使用dos2unix将帮助您解决这个问题。dos2unix 的作用是删除您遇到的隐藏 Windows 字符 (^M)。
基于 Windows 的文本编辑器在行尾放置特殊字符来表示换行符或换行符。通常无害,Linux 服务器上的某些应用程序无法理解这些字符,并可能导致服务无法正确响应。
如果您的 Linux 机器上还没有 dos2unix:
安装 dos2unix
apt install dos2unix
Run Code Online (Sandbox Code Playgroud)
对有问题的文件运行 dos2unix
dos2unix your_problematic_file.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6169 次 |
| 最近记录: |