3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェルスクリプトの改行コードをCRLFにしてはいけない

Posted at

ある日を境に、ディレクトリ名やファイル名に「^M」が付くようになった。
^Mは調べたらCR(復帰コード)らしい。

このような現象が発生する原因は、ディレクトリやファイルを作成するシェルスクリプトの改行コードがCRLFになっていたからであった。

PATH="/var/log/apache2"
sudo mkdir ${PATH}

上のシェルスクリプトの改行コードがCRLFだと、作成されるディレクト名は次のようになる。

apache2^M^M/ 

改行コードをLFにしたら治った。

蛇足

ラズパイ起動時に/var/log/以下のディレクトリを自動生成させるserviceをsystemdで作成していたが、ある日を境にすべてのserviceのstatusがFAILEDになって動作しなくなった。

syslogを確認しても何のエラーも表示されていない。原因不明で困った。

Apache2も停止していることに気づく。Apache2が停止する原因は経験的にApache2のログファイル格納のためのディレクトリ(/var/log/apache2/)が存在しないことが多かったので、ちゃんとディレクトリが存在するか確認してみた。

root@raspberrypi:/# ls /var/log/
apache2??/ apt??/     fsck??/    lightdm??/ samba??/

ディレクトリに??が付いている。
Tabキーで予測させてみると以下のようになった。

root@raspberrypi:/# cd /var/log/(Tabキーを押す)
apache2^M^M/ apt^M^M/     fsck^M^M/    lightdm^M^M/ samba^M^M/

^M^Mと表示された。なんだこれは。調べたら改行コードが怪しいと判明する。そして冒頭へ。

どうやらWindowsのエディタでファイルを編集したとき、全ての改行コードがCRLFになっていたらしい。

Windowsで編集するときは気をつけよう。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?