On an Ubuntu 12.04 machine I've used the alternatives system to set the editor to vim.basic. I get the correct editor when root but not when I sudo to root and run crontab, and I'm trying to understand why.
A bit more detail. The alternative editor is currently set to vim.basic by manual mode (output trimmed):
% sudo update-alternatives --set editor /usr/bin/vim.basic % update-alternatives --display editor editor - manual mode link currently points to /usr/bin/vim.basic /bin/nano - priority 40 slave editor.1.gz: /usr/share/man/man1/nano.1.gz /usr/bin/vim.basic - priority 30 slave editor.1.gz: /usr/share/man/man1/vim.1.gz slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz Current 'best' version is '/bin/nano'.
If I sudo to root and edit crontab the editor is vim.basic:
% sudo -i % crontab -e # editor is vim; :help shows # *help.txt* For Vim version 7.3. Last change: 2010 Jul 20
EDITOR and SHELL as root:
# env | grep -i editor EDITOR=vim # echo $0 -bash
However as a normal user if I sudo crontab the editor is nano:
% sudo crontab -e # GNU nano 2.2.6
EDITOR and SHELL as normal user:
% env | grep -i editor EDITOR=vim % echo $0 zsh
Now I'm noticing that nano has a higher priority (40) than vim.basic (30), so I could change the priority of vim.basic. But that defeats the purpose of manual mode.
I've noticed that using sudo -E gives the correct editor, implying problem is environment related. That is:
sudo crontab -e # nano editor is used sudo -E crontab -e # vim editor is used