Quick Links

Want to have crontab use the editor of your choice instead of the other way around? This tutorial shows you how. These instructions will work with Linux, macOS and other Unix-like operating systems.

The Touchy Subject of Text Editors

A text editor performs a pretty mundane task. Yet the depth of feeling people associate with their personal preference editor has led to flame wars that have been burning since 1985. We're not stoking that fire, nor advocating one editor over another. What we're going to show you is how to change the default editor for crontab to something else, should you choose to.

The crontab -e command will open an editor so that you can edit your cron table. Your cron table holds the list of any scheduled jobs you have set to occur at specified times. We're not diving into the details of cron jobs in this article. We're simply looking at the editor associated with the crontab -e command.

Related: How to Schedule Tasks on Linux: An Introduction to Crontab Files

The very first time you issue the crontab command with the

        -e
    

(edit) option in a Bash terminal, you're asked to pick the editor you'd like to use. Type crontab , a space,

        -e
    

 and press Enter.

crontab -e

crontab -e command

The editor you select is then used to open your cron table. In this example, nano was chosen by pressing the 1 key.

cron table in nano editor

The editor that you select from the menu is used every time you issue the crontab -e command. If you later change your mind, how do you pick another editor if you only get the menu the first time? That's easy. The command to use is select-editor.

select-editor

select-editor command

So far, so simple. But what if you want to use an editor that isn't in that menu? Or what if you're working on an operating system that doesn't provide the select-editor command? We can handle those scenarios as well.

What About Distros That Don't Provide select-editor?

We can set the default editor for crontab by adding a line to our .bash_profile file. Type this command:

gedit ~/.bash_profile

When the editor appears, add this entry to the file:

export VISUAL="gedit"

.bash_profile in gedit

Of course, you'd substitute the command that launches the editor you wish to use for 'gedit'. Save that file and close the editor. To see these changes take effect, either log out and back in or issue this command:

. ~/.bash_profile

. ~/.bash_profile command

Note that the line starts with a dot or period. The source command is an alias for the period command and performs the same action. But not all distributions provide the source command. The period command should always be present. Having given that caveat, the source command was present on all of the distributions this article was tested against Ubuntu, Debian, Manjaro, Arch, Fedora, CentOS, and OpenIndiana.

Whether you type a period or the word source, the command causes the settings from your .bash_profile to be read and transferred to your current session. Now when you type:

crontab -e

The editor you have specified will be used to open your cron table.

cron table in gedit

Your .bash_profile Might Not Be Empty

Your .bash_profile file might not be empty when you edit it. Just scroll to the bottom and add the export VISUAL="gedit" line to the bottom of the file. This is the default .bash_profile in Manjaro Linux, with the new line added:

export line in .bash_profile

And Finally, OpenIndiana

With OpenIndiana, you need to add the export VISUAL="gedit" line to your .bashrc file, not to your .bash_profile. The command to you need to enter is:

pluma ~/.bashrc

.bashrc in pluma

Add the line and save the file, and close and re-open your terminal window.

Issue the crontab -e command to verify your changes have taken affect:

crontab -e

cron table in nano openIndiana

And now your cron table is loaded into nano.

Now you can specify the editor of your choice on many types of Linux, whether it is descended from Debian, RedHat, Arch or something closer to a plain vanilla Unix.

Linux Commands

Files

tar · pv · cat · tac · chmod · grep ·  diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Processes

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Networking

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts