Shopt for Bash – Cdspell for cd dir change mistypes

What is shopt? A marvellous BASH builtin command, that’s what it is!

I’ve added the whole shopt list to my .bashrc below, but i’m only going to talk about CDSPELL for cd dir change mistypes. One thing to remember is that if you issue a shopt command manually as a user or root, then close your terminal, it will revert back to OFF. I have added the shopt options to my .bashrc so that I can enable and disable the specific options i need. There are a few that are enabled by default, so if you decide you want them disabled permanently you just add a -u switch before them.
See the syntax below for enabling and disabling shopt options.

Issuing shopt SET or UNSET commands: From http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html

Syntax
shopt [-pqsu] [-o] [optname …]

Options
-s Enable (set) each optname

-u Disable (unset) each optname.

-p Display a list of all settable options, with an indication of
whether or not each is set. The output is displayed in a form
that may be reused as input. (-p is the default action)

-q Suppresses normal output; the return status indicates whether the optname
is set or unset. If multiple optname arguments are given with `-q’,
the return status is zero if all optnames are enabled; non-zero otherwise.

-o Restricts the values of optname to be those defined for the `-o’ option to
the set builtin.

The cdspell bash builtin:
As you can see below, apart from the autoset options, I have manually set cdspell. If you spend a lot of time navigating directories via the terminal, you will often make spelling mistakes like “/ect”or “/Etc” instead of “/etc”, with cdspell enabled, bash will autocorrect the mistake and allow you to hit enter and still get to your destination. This saves a lot of time having to keep going back back and correcting directory paths.

My .bashrc shopt section:
############################
#
# SHOPT AUTOSTARTS
#
############################
# autocd
# cdable_vars
shopt -s cdspell # on MANUAL
#checkhash off
#checkjobs off
#checkwinsize on AUTO
#cmdhist on AUTO
#compat31 off
#compat32 off
#compat40 off
#dirspell off
#dotglob off
#execfail off
#expand_aliases on AUTO
#extdebug off
#extglob on AUTO
#extquote on AUTO
#failglob off
#force_fignore on AUTO
#globstar off
#gnu_errfmt off
#histappend on AUTO
#histreedit off
#histverify off
#hostcomplete off
#huponexit off
#interactive_comments on AUTO
#lithist off
#login_shell off
#mailwarn off
#no_empty_cmd_completion off
#nocaseglob off
#nocasematch off
#nullglob off
#progcomp on AUTO
#promptvars on AUTO
#restricted_shell off
#shift_verbose off
#sourcepath on AUTO
#xpg_echo off
############################

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s