ある日を境に、ディレクトリ名やファイル名に「^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で編集するときは気をつけよう。