[zsh]改行のない行が無視されてしまうのはzshの仕様だった件

告白します。
行末の改行がないときに何かがおかしいとうすうす感づいてはいたのですが、見て見ぬふりをしていました。

今日、それがzshの仕様だったことが判明しました。
しかも表示だけの問題かと思っていたら、パイプととリダイレクトでもそのような仕様でした。
% echo -n hello
何も出力されない

% echo -n hello | cat
何も出力されない

% echo -n hello > a.txt
空のa.txtが作成される

% printf "1\n2"
1

% printf "1\n2" > a.txt
"2"は保存されない。
画面表示だけならまだしも、パイプとリダイレクトでこれが起こってしまうと思わぬバグになりそうです。

このおせっかい機能を無効にするにはこうすればよいでそうです。
改行なしの行を表示させる
.zshrcにこれを追記
unsetopt promptcr

久々にPerlスクリプトを書いていたときにこの問題に遭遇して、 はじめzshの問題とは気づかず、Perlを疑ってしまいました。
ラリーさんごめんなさい。
参考
zshのある暮らし2 - FAQ@zshスレ - 出力の最終行が表示されない
カテゴリ:

人気記事