環境
Ubuntu20.04
Ruby2.7
はじめに
Ubuntu環境でRubyを実行したところ、つぎのエラーが表示されたため、そのトラブルシュートになります。
ruby: warning: shebang line ending with \r may cause problems
原因
エラーの内容は
「改行コードに\rが使われてると、問題を引き起こす可能性があります」という意味です。エディタで改行コードを見てると、CRLFと表示されます。CRLFはWindowsで利用される改行コードです。CRLFで作られた改行コードをLinux上で動かしたためにエラーが発生しました。
Linuxで動かすにはLinux用の改行コードに変換する必要があります。開発はWindoes環境で行い動作環境はUbuntuといった、ハイブリッド環境を使っていると、このような問題が発生しました。
改行コードを変換する
現状の改行コードを確認するコマンドです。改行部分が、\r\nで表示されていれば、Windows用のCRLFになっています。
$od -c hoge.rb
改行コードを変換するコマンドです。nkfは富士通が開発した文字コードを変換するための有名なツールです。これを使って、改行コードも変換することができます。
$nkf -Lu hoge.rb > hoge_lf.rb
変換後の改行コードを確認します。改行部分が、\nで表示されていれば、Linux用のLFになっています。
$od -c hoge_lf.rb
VS Codeで直す
VS Codeを使って改行コードをCRLFからLFに直すこともできます。やり方はいたって簡単です。改行コードはVS Codeの右下のバーに表示されます。そこをクリックして、改行コードのプルダウンメニューからLFを選択します。その後、更新すれば、改行コードをLFになっています。