OSXでcrontabの編集が反映されない

OSXでcrontabを編集すると、vi終了後に

crontab: temp file must be edited in place

と出てきて編集が反映されなくて困っていた。

原因はOSXではviが存在しなくて、 /usr/bin/vi -> /usr/bin/vim でsymlinkされているためcrontab編集時にvimが起動されること。vimなので当然 ~/.vimrc が読み込まれて、そこでファイルのバックアップをとるようにしているとこの問題が出るのをつきとめた。

バックアップを作っていて役に立った記憶がないけれど、作らないのも気持ちが悪いのでvimの設定はそのままで。いままでcrontabを編集する時だけ .vimrc をリネームしてたりしてたけど、そんなアホなこといつまでもやってられるかというわけで根本的対応。

~/bin/vi を作って、こいつの中で vim -C でvi互換モードで起動。だと、なぜかやっぱり .vimrc を読み込んでいるようなので .vimrc を読まなくする方向で記述。

#!/bin/sh

/usr/bin/vim -u NONE $*

あとはエイリアスで

alias crontab="EDITOR=¥"$HOME/bin/vi¥" crontab"

と設定。

けっこう手こずっていたわりに書いてみるとこれだけなのでした。そもそもviが入ってないのが悪いんじゃ。


About this entry