Debian comes with a very handy utility called update-alternatives that helps to set default tools for various tasks.
It is possible for several programs fulfilling the same or similar functions to be installed on a single system at the same time. For example, many systems have several text editors installed at once. This gives choice to the users of a system, allowing each to use a different editor, if desired, but makes it difficult for a program to make a good choice for an editor to invoke if the user has not specified a particular preference.
On Linode, it seems that the default editor is nano, I prefer to use vim for editing git commits, visudo, and other things that use the default editor which is symbolically linked through
/usr/bin/editor. The update-alternatives package basically changes the symbolic links for you.
In order to change your default editor, you simply need to run the following command:
sudo update-alternatives --config editor
The output of this command is shown below. You will see a list of all of your editors that you currently have installed and will be asked to make a choice.
There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/nano 40 manual mode 2 /usr/bin/vim.basic 30 manual mode * 3 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number:
Behind the scenes you can see that all this does it updates the symbolic links.
[email protected]:~$ ls -al /usr/bin/editor lrwxrwxrwx 1 root root 24 Feb 10 20:49 /usr/bin/editor -> /etc/alternatives/editor [email protected]:~$ ls -al /etc/alternatives/editor lrwxrwxrwx 1 root root 17 Apr 28 18:56 /etc/alternatives/editor -> /usr/bin/vim.tiny
There are many other things that can be configured this way. For more information reading the man page for update-alternatives is worthwhile.
If you made it this far, you should probably follow me on twitter. 🙂 Follow @levlaz