viエディタで改行コードをUNIX仕様に変換する方法
2019/01/10
秀丸エディタで作成したシェルファイル(.sh)を手持ちのサーバにFTPアップロードし、ターミナルから起動させたところ、bad interpreterエラーが発生したので、viエディタ(vim)を使って改行コードをUNIX仕様にする方法を備忘録としてポストします。
bad interpreterエラー
秀丸エディタで作成したシェルファイル(.sh)を手持ちのサーバにFTPアップロードし、ターミナルから起動させたところ、以下の様なエラーが発生しました。
-bash: /file/to/path/dbdump.sh: /bin/sh^M: bad interpreter: そのようなファイルやディレクトリはありません
「bad interpreterエラー」とは何ぞやと調べたところ、改行コードが異なると起きるエラーだそうです。
秀丸エディタでは文字コード EUC、改行コード LF で作成していたのですが、FTPする時かどこかで変わってしまった??(原因不明)
そんな時は焦らず、ターミナルから viエディタを起動し、改行コードを UNIX 仕様に変換して乗り切りましょう。
1 2 3 4 |
vi dbdump.sh // ←viエディタ(vim)起動 :set fileformat:unix // コロンを入力することで、画面の下の方に入力したテキストが表示される :wq |
開いて、fileformatを変換する、ってことです。
最後の「:wq」は上書き保存のコマンドです。
現状のファイルフォーマットがどうなっているのかを調査する場合は以下のようにします。
1 2 3 4 |
:set fileformat? // 結果の例 fileformat=unix |
やるな、vi。
ちなみに、viエディタと書いていますが、実は vim が動いていたことに非常に驚いています(苦笑)