蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

UNIX用のソフトをMacOSXで動かすときの落とし穴

UNIX用の系統解析ソフトを使うとき,自分は FreeBSD 上で実行するからいいのだが,研究室のヒトビトはMacOSXのターミナル上で動かしている.ところが,「動かない」と言って助けを求められることが何度かあった.UNIXの基礎的な使い方の問題,例えば「カレントディレクトリにあるソフトを動かすには ./filename のように ./ をつける」だとすぐ解決する.

ところが,なかなか気づきにくいのが改行コードの問題.Macで入力ファイルを作ると改行コードはCR(0x0d, \r)なのだが,UNIXのソフト*1は改行がLF(0x0a, \n)であることを期待している.そのせいで入力ファイルがうまく読み込めず,途中で解析が止まってしまう.でも入力ファイルをいくら矯めつ眇めつしても,テキストエディタがCRでもLFでも改行として扱ってくれるので,改行コードがおかしいとは気づけない.ひょっとして,とひらめいて保存形式を変えてやると動くので,初めて「そういうことかぁ」となるのだ.

今日はさらに妙な入力ファイルにでくわした.YMMTくんが Word で作ったというファイルなのだが,1つのファイルの中に LF と CR が混在していた.ターミナル上で hexdump -C inputfile とやって気づいた.一体どうやって作ったのだね,こんなファイルを・・・

*1:必ずしもUNIX用ソフトだけじゃないかも.JAVAで書かれたTCSもこの問題があった