.bashrc
author Adam Gomaa <adam@gomaa.us>
Sun Dec 18 13:13:02 2011 -0500
changeset 521 67f37d330ad0
parent 315 2713a9b2fc0a
permissions -rw-r--r--
Remove project & _list_projects, I don't use them anymore.
gak9422e@0
     1
# ~/.bashrc: executed by bash(1) for non-login shells.
gak9422e@0
     2
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
gak9422e@0
     3
# for examples
adam@81
     4
umask 022
gak9422e@0
     5
code@313
     6
export DOTROOT=$HOME/var/srv/hg.gomaa.us/dotfiles
code@155
     7
code@275
     8
add_to_pythonpath()
code@275
     9
{
code@299
    10
    if [ ! -d $1 ]; then
code@299
    11
        return
code@299
    12
    fi
code@275
    13
    if ! echo $PYTHONPATH | /bin/egrep -q "(^|:)$1($|:)" ; then
code@275
    14
        if [ "$2" = "after" ] ; then
code@275
    15
            PYTHONPATH=$PYTHONPATH:$1
code@275
    16
        else
code@276
    17
            PYTHONPATH=$1:$PYTHONPATH
code@275
    18
        fi
code@275
    19
    fi
code@275
    20
}
code@275
    21
add_to_path()
code@275
    22
{
code@299
    23
    if [ ! -d $1 ]; then
code@299
    24
        return
code@299
    25
    fi
code@277
    26
    if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
code@275
    27
        if [ "$2" = "after" ] ; then
code@277
    28
            PATH=$PATH:$1
code@275
    29
        else
code@277
    30
            PATH=$1:$PATH
code@275
    31
        fi
code@275
    32
    fi
code@275
    33
}
code@287
    34
PYTHON_VERSION=`python -V 2>&1 | awk '{print $2}' | awk -F . '{print $1"."$2}'`
code@277
    35
export PYTHONPATH
code@277
    36
export PATH
code@299
    37
add_to_pythonpath ~/var/lib/python$PYTHON_VERSION/site-packages
code@287
    38
add_to_pythonpath ~/.local/lib/python$PYTHON_VERSION/site-packages
code@275
    39
add_to_pythonpath ~/.local/lib
code@275
    40
add_to_pythonpath $DOTROOT/python
code@275
    41
add_to_path /usr/local/sbin
code@275
    42
add_to_path /usr/sbin
code@275
    43
add_to_path /sbin
code@275
    44
add_to_path ~/.bin
code@275
    45
add_to_path ~/.local/bin
code@299
    46
add_to_path ~/var/bin
code@275
    47
add_to_path $DOTROOT/bin
code@275
    48
add_to_path ~/.ec2/bin
code@275
    49
add_to_path /usr/local/bin
code@275
    50
add_to_path /usr/bin
code@275
    51
add_to_path /bin
code@275
    52
add_to_path /usr/games
code@299
    53
export TEXINPUTS=$TEXINPUTS:~/.lib/tex:~/share/tex:.:~/.lib/tex:~/share/tex:.:~/.lib/tex:~/share/tex:.:~/.lib/tex:~/share/tex
code@147
    54
export PYTHONSTARTUP=~/.pythonrc.py
code@68
    55
# Syntax-highlighting less. 
code@68
    56
LESS='-R'; export LESS
code@224
    57
export LESSOPEN="| lesspipe %s"
code@68
    58
code@324
    59
export WORKON_HOME=$HOME/var/environments
code@288
    60
code@313
    61
fuzzyfind()
code@193
    62
{
code@313
    63
    local base=$1
code@313
    64
    local fname=$2
code@313
    65
    local path=$base/$fname
code@313
    66
code@313
    67
    if [ -d $path ] 
code@235
    68
    then
code@313
    69
        export FUZZYFIND_PATH=$path
code@313
    70
        return 0
code@235
    71
    else
code@313
    72
        path=$base/*$2*
code@313
    73
        # This is probably me revealing my lack of bash-fu.
code@313
    74
        if [ -d $path ] 
code@313
    75
            then
code@313
    76
            export FUZZYFIND_PATH=$path
code@313
    77
            return 0
code@313
    78
            else
code@313
    79
            return 1
code@313
    80
        fi
code@235
    81
    fi
code@193
    82
}
code@235
    83
code@315
    84
fuzzyfind-frontend()
code@313
    85
{
code@313
    86
    fuzzyfind $1 $2
code@313
    87
    if [ "$?" -eq "0" ]; then 
code@313
    88
        if [ "$TERM" = "screen" ]; then
code@313
    89
            # Set the title to whatever project I'm working on, if in
code@313
    90
            # screen.
code@313
    91
            screen -X title $2
code@313
    92
        fi
code@313
    93
        local new_path=$FUZZYFIND_PATH
code@313
    94
        unset FUZZYFIND_PATH
code@313
    95
        cd $new_path
code@313
    96
    else
code@313
    97
        echo "Unable to find $1/$2 or similar"
code@313
    98
    fi
code@313
    99
}
code@235
   100
code@182
   101
src()
code@182
   102
{
code@315
   103
    fuzzyfind-frontend ~/var/srv $1
code@313
   104
}
code@243
   105
code@182
   106
greppy()
code@182
   107
{
code@161
   108
    grep --color="auto" -Ri --include="*.py" $1 ./
code@104
   109
}
code@301
   110
code@301
   111
code@301
   112
# Seems like loop time.
code@68
   113
code@68
   114
if [ -f ~/.bash_local ]; then
code@68
   115
    . ~/.bash_local
code@68
   116
fi
code@68
   117
code@301
   118
if [ -f ~/.bash_aliases ]; then
code@301
   119
    . ~/.bash_aliases
code@301
   120
fi
code@301
   121
code@301
   122
if [ -f $DOTROOT/.bash.d/mercurial_completion ]; then
code@301
   123
    . $DOTROOT/.bash.d/mercurial_completion
code@301
   124
fi
code@301
   125
code@301
   126
if [ -f $DOTROOT/.bash.d/virtualenvwrapper_bashrc ]; then
code@301
   127
    . $DOTROOT/.bash.d/virtualenvwrapper_bashrc
code@301
   128
fi
code@301
   129
code@301
   130
code@301
   131
gak9422e@0
   132
# If not running interactively, don't do any more. 
gak9422e@0
   133
[ -z "$PS1" ] && return
gak9422e@0
   134
gak9422e@0
   135
# don't put duplicate lines in the history, and ignore same sucessive entries.
gak9422e@0
   136
export HISTCONTROL=ignoreboth
gak9422e@0
   137
export EDITOR=emacsclient
gak9422e@0
   138
gak9422e@0
   139
# check the window size after each command and, if necessary,
gak9422e@0
   140
# update the values of LINES and COLUMNS.
gak9422e@0
   141
shopt -s checkwinsize
code@31
   142
shopt -s histappend
gak9422e@0
   143
gak9422e@0
   144
# enable color support of ls and also add handy aliases
gak9422e@0
   145
if [ "$TERM" != "dumb" ]; then
gak9422e@0
   146
    eval "`dircolors -b`"
gak9422e@0
   147
    alias ls='ls --color=auto'
gak9422e@0
   148
    #alias dir='ls --color=auto --format=vertical'
gak9422e@0
   149
    #alias vdir='ls --color=auto --format=long'
gak9422e@0
   150
fi
gak9422e@0
   151
gak9422e@0
   152
code@115
   153
_prompt_pwd()
code@80
   154
{
code@80
   155
    case $PWD in
code@80
   156
        $HOME)
code@80
   157
            echo -n '~'
code@80
   158
            ;;
code@80
   159
        *)
code@87
   160
            local last=${PWD/#*\//}
code@80
   161
            echo -n $PWD | sed -e "s|^$HOME|~|" \
code@86
   162
                               -e 's-/\([^/]\{2\}\)\([^/]*\)-/\1-g' \
code@87
   163
                               -e "s|\$|${last:2}|"
code@80
   164
            ;;
code@80
   165
    esac
gak9422e@0
   166
}
gak9422e@0
   167
code@68
   168
function cd_and_ls {
code@181
   169
    cd $1 && ls
code@68
   170
}
code@68
   171
function cd_and_ll {
code@181
   172
    cd $1 && ll
code@68
   173
}
code@68
   174
alias c=cd_and_ls
code@68
   175
alias cl=cd_and_ll
gak9422e@0
   176
code@181
   177
reload()
code@181
   178
{
code@181
   179
    source ~/.bashrc
code@181
   180
}
code@181
   181
code@271
   182
GRAY=`tput setaf 0`
code@80
   183
RED=`tput setaf 1`
code@80
   184
GREEN=`tput setaf 2`
code@80
   185
YELLOW=`tput setaf 3`
code@80
   186
BLUE=`tput setaf 4`
code@80
   187
MAGENTA=`tput setaf 5`
code@80
   188
CYAN=`tput setaf 6`
code@80
   189
WHITE=`tput setaf 7`
code@80
   190
BOLD=`tput bold`
code@80
   191
RESET=`tput sgr0`
code@271
   192
GREEN_PS1='\[$GREEN\]\[$BOLD\]$(_ident)\[$RESET\]\[$MAGENTA\]$(_prompt_pwd)/\[$GREEN\]\$\[$RESET\] '
code@274
   193
YELLOW_PS1='\[$GREEN\]\[$BOLD\]$(_ident)\[$RESET\]\[$MAGENTA\]$(_prompt_pwd)/\[$YELLOW\]\$\[$RESET\] '
code@271
   194
PS1=GREEN_PS1
code@271
   195
code@274
   196
_inside_screen()
code@274
   197
{
code@274
   198
    # I hate bash.
code@274
   199
    if [ "$STY" = "" ]; then
code@274
   200
        echo "false"
code@274
   201
    else
code@274
   202
        echo "true"
code@274
   203
    fi
code@274
   204
}
code@274
   205
code@301
   206
if [ `_inside_screen` = "true" ]; then
code@301
   207
    PS1=$YELLOW_PS1
code@301
   208
else
code@301
   209
    PS1=$GREEN_PS1
code@301
   210
fi
code@264
   211
code@264
   212
_ident()
code@264
   213
{
code@274
   214
    if [ `_inside_screen` = "true" ]; then
code@264
   215
        echo "$(hostname)($STY)"
code@264
   216
    else
code@264
   217
        echo $(hostname)
code@264
   218
    fi
code@264
   219
}
code@264
   220
code@275
   221
_screen_name()
code@275
   222
{
code@275
   223
    expr "$STY" : '[0-9]*\.\([a-z\.]*\)'
code@275
   224
}
code@275
   225
mkdir -p ~/.bash_history.d
code@275
   226
code@275
   227
if [ `_inside_screen` = "true" ]; then
code@261
   228
    # If I'm inside screen, set the caption to show STY so I know
code@261
   229
    # which screen.
code@261
   230
    screen -X caption always  "$STY %= %-w%L>%{= BW}%n*%t%{-}%52<%+w %L="
code@288
   231
    export HISTFILE=~/.bash_history.d/`_screen_name`.$WINDOW
code@261
   232
fi
code@261
   233
code@213
   234
[[ -n "$(command -v stty)" ]] && stty -ixoff -ixon