.bashrc

From CSEE Documentation
Revision as of 15:46, 29 April 2008 by Willm1 (talk | contribs) (Create document on how to write a nice .bashrc)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

A .bashrc or .bash_profile file contains settings that are applied to non-interactive or interactive shells respectively.

Simple things

Setting the PATH

It's often nice to have more binaries directly accessible in your PATH environment variable. To do this, I use the following settings:

os=`uname -s`
if [ "$os" = "SunOS" ]; then
  export PATH=/usr/ccs/bin:/usr/site/bin:/usr/sbin:/usr/bin:/bin:/opt/csw/bin:/opt/csw/sbin:/usr/sfw/bin:/opt/sfw/bin:/usr/local/bin
else 
  if [ "$os" = "Linux" ]; then
    export PATH=/usr/site/bin:/usr/sbin:/usr/bin:/usr/local/bin:/bin
  fi
fi
if [ "$LOGNAME" = "root" ]; then
  export PATH=$PATH:/sbin
fi

Changing the prompt

Having a colored prompt can be helpful to notice quickly where the prompt is in a long listing of output, and having a reminder who you are logged in as and where you are never hurts. To accomplish this, I use the following prompt:

export PS1="\[\033[34m\]\u\[\033[0m\]@\[\033[32m\]\h\[\033[0m\]:\[\033[31m\]\w\[\033[0m\]\\$ "

This gives your username in blue (i.e., if you sudo -s it'll be root instead of your username) followed by a black @ followed by the hostname of the machine you're on followed by a colon followed by the path to the current directory, followed by the sigil $ or # for user or root respectively. This format has the advantage of being usable by scp; if you have to copy a file from that directory onto another machine, you can copy/paste the whole string into your scp command.

Changing the terminal name

Setting the name of the terminal is reflected in the title bar in gnome-terminal, or with a similar mechanism for other terminals (or GNU screen). I use the following settings:

case $TERM in
  xterm*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
    ;;
  screen*)
    PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
    ;;
  *)
    ;;
esac

Changing your default pager

more is for losers. Use less instead.

export PAGER=less