A nice .bashrc script
26 Aug 2015
unalias -a # If not running interactively, don't do anything [ -z "$PS1" ] && return # don't put duplicate lines in the history. See bash(1) for more options # ... or force ignoredups and ignorespace HISTCONTROL=ignoredups:ignorespace # append to the history file, don't overwrite it shopt -s histappend # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize ############################# PS1 support functions ################## # print non-zero exit _pnze() { local e=$1 if [ "$e" -ne "0" ]; then echo "[$e]" fi } # print git branch _pgb() { txt=$(git branch 2>&1) local e=$? if [ "$e" -eq "0" ]; then #local b=$(echo "$txt" | grep '*' | awk '{ print $1 }') # echo "$b" # local b=$(echo "$txt" | grep '*' | cut --delimiter=' ' --fields=2) # echo "$b" local b=$(echo "$txt" | grep '*') echo "${b:2}" fi } # print git status _pgs() { txt=$(git status --porcelain 2>&1) local e=$? if [ "$e" -eq "0" ] && [ -n "$txt" ]; then echo "+" fi } # print git branch and status _pgbs() { local b=$(_pgb) local s=$(_pgs) if [ -n "$b" ]; then echo "($b$s)" fi } ############################# PS1 ################## # IMPORTANT: must capture exit status $? of previous command # FIRST, otherwise, later commands in PS1 will overwrite $? PS1='$(_pnze $?)\u@\h:\w$(_pgbs)\$ ' # This changes the terminal window title PROMPT_COMMAND='echo -ne "\033]0;$(_pnze $?)${PWD/$HOME/\~}$(_pgbs)\007"' ################## bash completion ################# # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi ############## "aliases" #################### h() { if [ -n "$1" ]; then history | grep "$1" else history fi } # Runs vi as vim vi() { vim "$@" } # Sets the terminal title set-prompt() { PROMPT_COMMAND="echo -ne \"\033]0;${1:-TITLE NOT SET}\007\"" } ######## ls "aliases" #################### # see http://blog.twistedcode.org/2008/04/lscolors-explained.html export LS_COLORS='di=34:fi=0:ln=35:pi=31:so=31:bd=31:cd=31:or=41:mi=41:ex=32' # don't forget 'command' and 'builtin' # to get a list of builtins, run 'enable' ls() { command ls --color --file-type "$@" } C() { command ls --classify "$@" } c() { command ls --color "$@" } L() { command ls --color --file-type -ltrh "$@" } ############## HOMES ##################### export GROOVY_HOME=/usr/local/groovy-2.2.1 export JAVA_HOME=/usr/local/jdk1.7.0_45 export GRADLE_HOME=/usr/local/gradle-1.10 export ANT_HOME=/usr/local/apache-ant-1.9.3 ############## PATH ##################### export PATH=/usr/local/pgsql-9.3/bin:$PATH export PATH=$JAVA_HOME/bin:$PATH export PATH=$GRADLE_HOME/bin:$PATH export PATH=$GROOVY_HOME/bin:$PATH export PATH=$ANT_HOME/bin:$PATH