Some notes from our defaults at $DAYJOB. I can't take credit for most of
this. These were ideas I've picked up from various people along the way.
# Prevent users from accidentally overwriting files with redirection.
set -o noclobber
Warning: While I'm the one that added it, sometimes I don't love
"noclobber".
# Fix some spelling errors in tab-completions
shopt -s cdspell
shopt -s dirspell
# Allow ** to recurse
shopt -s globstar 2> /dev/null
# Make globs case-insensitive
shopt -s nocaseglob
# Tell less to not ring the bell (Q) and pass through color escape
# sequences (R).
export LESS="QR"
# Save and show timestamps in the command history.
HISTTIMEFORMAT='%F %T '
We also colorize the hostname, which can act as a subtle hint as to
whether you are on the right system. (It's basically an subconscious
thing; it's not like we memorize which system is which color.) These
days, the per-host color is calculated with Jinja templating in Ansible.
The example below is the older code where bash calculates it. My email
client is going to word-wrap this, so you'll have to reverse that, but
it's straightforward.
# We use dircolors instead of tput to determine which types of terminals
# support colors. Otherwise, we can end up with an inconsistency
# between bash and ls, et al. For example: a vt100 on OpenIndiana.
if (LS_COLORS= ; eval $(dircolors 2> /dev/null) ; [ -n "$LS_COLORS" ])
then
# Colorize based on hostname: green, yellow, blue, magenta, or cyan.
ps_h='\[\e[1;'$((32 + $(hostname | cut -d. -f1 | cksum | cut -c1-3)
% 5))'m\]\h\[\e[0m\]'
if [ "$(id -u)" = "0" ]
then
# Make the username and # red when logged in as root.
PS1='${debian_chroot:+($debian_chroot)}\[\e[1;31m\]\u\[\e[0m\]@'$ps_h':\w\[\e[0;31m\]\$\[\e[0m\]
'
else
PS1='${debian_chroot:+($debian_chroot)}\u@'$ps_h':\w\$ '
fi
unset ps_h
if [ -r ~/.dircolors ]
then
eval "$(dircolors -b ~/.dircolors)"
else
eval "$(dircolors -b)"
fi
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
It's not shown in the example above, but we also use white text on a red
background for the hostname if it ends in -new. This is our convention
when a new system is being setup: we set the hostname (in Ansible in our
case) for a system replacing a host named "name" to "name-new". This
prompt helps you keep track of whether you are on the current production
system or the -new system you are configuring. It is functionally
equalivalent to:
ps_h='\[\e[1;37m\]\[\e[1;41m\]\h\[\e[0m\]'
--
Richard
Attachment:
signature.asc
Description: OpenPGP digital signature