Bash – What is the ‘editor’ Command?

basheditorsenvironment-variablesxubuntu

I was looking for a command that would hopefully open the current user's favourite text editor, because I am writing out some instructions with commands in a blog. I was expecting a command like edit, and I found editor. For me, it started vim in the terminal, which is close to what I wanted; I use vim-gtk. I started searching for a way to make editor use vim-gtk and found this question that explains an $EDITOR environment variable, but I am not sure if that is even related to the editor command. I tried man editor, but that just pulled up the vim manpage.

How can I make editor use a text editor of my choice, or should I be using a different command?

Best Answer

This is a Debian-ism (and therefore appears in Ubuntu, Mint, etc.). They've setup a link called editor. You can trace it back as follows:

$ which editor
/usr/bin/editor

$ ls -l /usr/bin/editor 
lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome

$ ls -l /usr/bin/vim.gnome
-rwxr-xr-x 1 root root 2403392 Oct 26  2012 /usr/bin/vim.gnome

So you can see that editor is just a Unix link to the executable vim.gnome.

Using editor?

I don't think I'd go in that direction of setting up editor in any meaningful way for users, given it's not what I would consider standard.

Additionally you can set the $EDITOR environment variable to point to anything you want, vim, gedit, emacs, etc. But this variable is only guaranteed to be used by other tools such as sudo, git, and subversion that are specifically designed to be tied into using the variable $EDITOR.

Implementation ideas

I would merely setup an alias of your own choice and either instruct the users that it's available to them via their $HOME/.bashrc file as alias X, or set it up as a system configuration in the file /etc/profile.d/our_aliases.sh, as alias X.

Or you could just tell users that the systems' provide gedit, gvim, vim, emacs, etc. and cut through the sugar coating and teach them about these things right off the bat.

Or you could provide a text file called /etc/help.txt which they could run via a command help (alias help="less /etc/help.txt") in a shell that would provide basic commands and how to perform various tasks. This approach allows you to customize the help as time goes by with new features or tips and it gives them more than just the editor convenience command.

Related Question