Setting shell options
- Task: Make changes to your bash shell environment using set and shopt commands.
- The set and shopt command controls several values of variables controlling shell behavior.
Contents
- List currently configured shell options
- 2 shopt command
- 3 Customizing Bash environment with shopt and set
List currently configured shell options
Type the following command:
set -o
Sample outputs:
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
- See set command for detailed explanation of each variable.
How do I set and unset shell variable options?
To set shell variable option use the following syntax:
set -o variableName
To unset shell variable option use the following syntax:
set +o variableName
Examples
Disable <CTRL-d> which is used to logout of a login shell (local or remote login session over ssh).
set -o ignoreeof
Now, try pressing [CTRL-d]
Sample outputs:
Use "exit" to leave the shell.
Turn it off, enter:
set +o ignoreeof
shopt command
You can turn on or off the values of variables controlling optional behavior using the shopt command. To view a list of some of the currently configured option via shopt, enter:
shopt
shopt -p
Sample outputs:
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
compat31 off
dotglob off
execfail off
expand_aliases on
extdebug off
extglob off
extquote on
failglob off
force_fignore on
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist off
login_shell off
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
How do I enable (set) and disable (unset) each option?
To enable (set) each option, enter:
shopt -s optionName
To disable (unset) each option, enter:
shopt -u optionName
Examples
If cdspell option set, minor errors in the spelling of a directory name in a cd command will be corrected. The errors checked for are transposed characters, a missing character, and one character too many. If a correction is found, the corrected file name is printed, and the command proceeds. For example, type the command (note /etc directory spelling):
cd /etcc
Sample outputs:
bash: cd: /etcc: No such file or directory
Now, turn on cdspell option and try again the same cd command, enter:
shopt -s cdspell
cd /etcc
Sample outputs:
/etc
[vivek@vivek-desktop /etc]$
Customizing Bash environment with shopt and set
Edit your ~/.bashrc, enter:
vi ~/.bashrc
Add the following commands:
# Correct dir spellings
shopt -q -s cdspell
# Make sure display get updated when terminal window get resized
shopt -q -s checkwinsize
# Turn on the extended pattern matching features
shopt -q -s extglob
# Append rather than overwrite history on exit
shopt -s histappend
# Make multi-line commandsline in history
shopt -q -s cmdhist
# Get immediate notification of background job termination
set -o notify
# Disable [CTRL-D] which is used to exit the shell
set -o ignoreeof
# Disable core files
ulimit -S -c 0 > /dev/null 2>&1
How do I setup environment variables?
Simply add the settings to ~/.bashrc:
# Store 5000 commands in history buffer
export HISTSIZE=5000
# Store 5000 commands in history FILE
export HISTFILESIZE=5000
# Avoid duplicates in hisotry
export HISTIGNORE='&:[ ]*'
# Use less command as a pager
export PAGER=less
# Set vim as default text editor
export EDITOR=vim
export VISUAL=vim
export SVN_EDITOR="$VISUAL"
# Oracle database specific
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_SID=XE
export NLS_LANG=$($ORACLE_HOME/bin/nls_lang.sh)
# Set JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
# Add ORACLE, JAVA and ~/bin bin to PATH
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:$JAVA_HOME/bin
# Secure SSH login stuff using keychain
# No need to input password again ever
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
# Turn on Bash command completion
source /etc/bash_completion
# MS-DOS / XP cmd like stuff
alias edit=$VISUAL
alias copy='cp'
alias cls='clear'
alias del='rm'
alias dir='ls'
alias md='mkdir'
alias move='mv'
alias rd='rmdir'
alias ren='mv'
alias ipconfig='ifconfig'
# Other Linux stuff
alias bc='bc -l'
alias diff='diff -u'
# get updates from RHN
alias update='yum -y update'
# set eth1 as default
alias dnstop='dnstop -l 5 eth1'
alias vnstat='vnstat -i eth1'
# force colorful grep output
alias grep='grep --color'
# ls stuff
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
source
2019-05-10 16:43:07
Comments
Add a Comment