crontabのエディタを変える

概要

sudo crontab -e するとき,vim を使いたいのに vi が起動するときのメモ

原因

  • 環境変数が正しく設定されていない
    • crontab では VISUAL もしくは EDITOR という変数を利用してエディタを選択す

manより抜粋

-e Edits the current crontab using the editor specified by the VISUAL or EDITOR envi‐ ronment variables. After you exit from the editor, the modified crontab will be installed automatically.

  • sudoしたときにcrontabのエディタ変数を環境変数として引き継がない設定になってる
$sudo env | grep EDITOR
$
$sudo sudo -V | grep EDITOR
visudo が EDITOR 環境変数を尊重して使用します

対策

$ grep EDITOR ~/.bashrc 
export EDITOR='/bin/vim'
  • sudoers環境変数を引き継ぐ設定を追記する
$ sudo grep -2 EDITOR /etc/sudoers
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults    env_keep += "EDITOR"  ## ここを追記した

#
$ sudo sudo -V | grep EDITOR
visudo が EDITOR 環境変数を尊重して使用します
    EDITOR