Vagrant中的Windows CRLF到Unix LF问题
我正在使用Vagrant配置一些虚拟机.这是情况:
主持人:Windows 7(64位) 访客:Ubuntu 14.04(64位) 我有一个问题,让CRLF行结束转换为LFs.这导致共享文件夹中的bash脚本在来宾计算机中失败(参见下文). vagrant@vagrant-host:/vagrant/bin$sudo bash build-ubuntu-14.04.1-c make.sh build-ubuntu-14.04.1-cmake.sh: line 5: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 19: $'r': command not found : invalid option04.1-cmake.sh: line 21: set: - set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] build-ubuntu-14.04.1-cmake.sh: line 22: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 24: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 26: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 29: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 36: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 42: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 46: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 48: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 50: $'r': command not found build-ubuntu-14.04.1-cmake.sh: line 226: syntax error: unexpected end of file 在我的Vagrantfile中,我将shell privisioner参数二进制设置为false. # Provision the VM ubuntu.vm.provision "shell" do |s| # replace Windows line endings with Unix line endings s.binary = false s.inline = "sudo apt-get update; sudo bash vagrant/bin/build-ubuntu-14.04.1-cmake.sh" end 根据Vagrant文??档:
这有什么问题?我是否忽略了文档中的内容? 更新1: # detect all text files and automatically normalize them (convert CRLF to LF) * text=auto 我还阅读了Git提供的“Dealing with line endings”文档.当我提交到我的存储库时,CRLF会转换为LF,但是当我在Windows工作区中检出更改时,LF会转换为CRLF.这是我在Git工作流程中想要的确切行为.问题在于Vagrant.我设置的二进制标志不执行文档描述的方式. 更新2:
你是对的,documentation about binary 是误导性的.我已经提出了
a pull-request,这已经在文档页面上得到了纠正.
现在它说:
因此,要用Unix行结尾(LF)替换Windows行结尾(CRLF),您需要设置: s.binary = true 替代方案包括: >通过以下方式手动更改行结尾: >使用dos2unix命令, ex +'bufdo! %! tr -d r' -scxa *.sh >将以下行添加到Bashrc文件中(例如?/ .bashrc)gist: export SHELLOPTS set -o igncr 如果您使用Git对代码进行版本控制,则应该: >通过将core.autocrlf选项设置为input或false,在OS X上配置Git以正确处理行结尾. 如果你已经安装了Git On Windows,最常见的错误是在安装过程中选择Checkout Windows风格的选项,所以你应该重新安装它并选择:Checkout as-is并提交Unix风格的行结尾(core.autocrlf设置为输入)或按原样检出,按原样提交(core.autocrlf设置为false). *.sh text eol=lf 所以人们编辑你的配置脚本,他们不会打破行结束. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 群集和/或Hyper-V副本?
- 身份验证 – 向Microsoft.Owin.Testing.TestServer验证请求
- 以编程方式在.NET中的Windows7中显示屏幕键盘
- windows-7 – Windows 7上是否提供ServerManager模块?
- windows-7 – Windows 7加入OS X Server域
- RocketMQ在windows环境下的安装
- windows-server-2008 – 用一个大30%的窗口替换windows超大
- Solidity中uint转bytes
- Windows窗体错误解析VB.NET
- windows – 运行Git push时Cygwin导致longjmp