/home/vagrant/.rvm/rubies/ruby-2.5.3/bin/ruby: warning: shebang line ending with \r may cause problems
我尝试安装另一个Ruby版本,但是警告仍然相同。 我正在使用开发者使用的相同Ubuntu版本。
/home/vagrant/.rvm/rubies/ruby-2.5.3/bin/ruby: warning: shebang line ending with \r may cause problems
我尝试安装另一个Ruby版本,但是警告仍然相同。 我正在使用开发者使用的相同Ubuntu版本。
我在尝试运行bin/rails db:create
时也遇到了同样的问题。我花了几个小时试着找出问题所在,但解决起来很简单。我使用的是Visual Studio Code作为我的编辑器。
我的解决方法为了解决这个问题,我导航到位于bin
文件夹下的ruby
文件(bin/rails
)。在Visual Studio Code编辑器的底部状态栏上,你应该能看到一个按钮CRLF
(控制字符)。点击它并将其更改为LF
。
错误信息的原因这是因为Windows默认使用CRLF
控制字符,而现在你正在使用Windows子系统来运行Linux,控制字符应该是LF
希望这对你们有所帮助。
您的文件中有一个 Windows 行尾符 ('\r\n'
),而不是 Unix 行尾符 ('\n'
)。因此,shell 尝试获取第一行,直到第一个 \n
之前,并发现该行以 \r
结尾。
有几种方法可以避免这些问题:
使用 git 自动处理:git config --global core.autocrlf true
(请参阅 https://help.github.com/articles/dealing-with-line-endings/ 和 How to change line-ending settings)
使用操作系统级别的工具:dos2unix
(使用您的操作系统工具进行安装)
编辑器 + editorconfig 文件:查看 https://editorconfig.org/#file-format-details 以了解如何设置 end_of_line
配置,并让您的编辑器完成其余部分。
对我在Windows上可行的方法如下:
git config --global core.autocrlf false
sudo find . -type f -exec dos2unix {} \;
git add --renormalize
你应该没有任何需要提交的内容,可以使用以下命令检查它是否有效:git ls-files --eol
\r\n
。请改用Unix行尾符\n
。 - Stefan\r
出现在\n
之前,但行的结尾确实是以\n
结束的。 - Aleksei Matiushkin\n
结尾。如果有Windows换行符,则属于shebang行的最后一个字符,即终止符\n
之前的最后一个字符将是\r
。至少一些操作系统仍会将其解释为解释器名称的一部分,因此它实际上会搜索名为ruby\r
的解释器可执行文件,显然找不到。因此,警告消息将终止符前的最后一个字符视为“行结束符”,而终止符则不是该行的一部分。 - Jörg W Mittagwarn_cr_in_shebang
实际上检查的是\r\n
。我已经打开了一个 PR 来重新编写这个消息。 - Stefan