【发布时间】:2015-06-18 16:04:27
【问题描述】:
我正在使用 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 格式检出源文件。
【问题讨论】:
-
你能发帖
echo $TERM吗? -
是标准的docker容器,
echo $TERM返回dumb -
试试
export TERM=xterm或exec >/dev/tty 2>/dev/tty </dev/tty(提示来自github.com/docker/docker/issues/728)
标签: windows bash docker newline