dotfiles/bash_profile
Fernando Schauenburg 419775ef10 Use easily extensible path manipulation
By using a for loop, new entries can easily be added to the PATH without
having to enter additional commands. The precedence of the entries can
also be easily adjusted by reordering the list that is iterated over.
2015-11-04 12:52:29 +01:00

187 lines
6.7 KiB
Bash

get_platform() {
local remove_spaces="s/ *//g"
local to_lower="y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
local get_version="s/[^0-9]*\(\([0-9]\+\.\?\)*\)/\1/"
local kernel=$(uname -s | sed "$remove_spaces; $to_lower")
local version=$(uname -r | sed "$get_version")
local machine=$(uname -m | sed "$remove_spaces; $to_lower")
echo "$kernel-$version-$machine"
}
#
# Environment variables
#
export PLATFORM=$(get_platform)
export EDITOR="vim"
export HISTSIZE="65536"
export HISTFILESIZE="$HISTSIZE"
export HISTCONTROL=ignoredups:ignorespace
export LANG="en_US.UTF-8"
export LANGUAGE="en_US"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
[ -z "$BACKGROUND" ] && export BACKGROUND="dark"
# Prepend custom bin directories to PATH if they exist.
for p in /usr/local/opt/coreutils/libexec/gnubin "$HOME/.dotfiles/bin" "$HOME/bin"
do
[ -d "$p" ] && export PATH="$p:$PATH"
done
# Prepend custom man directories to MATPATH if they exist, so that we get
# correct man page entries when multiple versions of a command are available.
for p in localman=/usr/local/share/man /usr/local/opt/coreutils/libexec/gnuman
do
[ -d "$p" ] && export MANPATH="$p:$MANPATH"
done
#
# Aliases
#
alias g="git"
alias ls="ls --color=auto"
alias l="ls -F"
alias la="ls -aF"
alias ll="ls -lF"
alias lla="ls -laF"
alias grep="grep --color=auto";
alias egrep="egrep --color=auto";
alias fgrep="fgrep --color=auto";
alias v="vim"
alias vi="vim"
alias path='echo $PATH | tr -s ":" "\n"'
alias manpath='echo $MANPATH | tr -s ":" "\n"'
if [[ ${PLATFORM%%-*} == "darwin" ]]; then
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
fi
#
# Shell options
#
for option in cdspell checkwinsize globstar histappend nocaseglob
do
shopt -s "$option" 2> /dev/null
done
#
# ~/.bashrc.local can be used for local settings (not in repository)
#
[ -f ~/.bashrc.local ] && . ~/.bashrc.local
#
# Solarized shell & prompt
#
setcolor() (
IFS="" # $* should be joined without spaces
if [ -n "$TMUX" ]; then
# http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324
echo -ne "\033Ptmux;\033\033]$*\007\033\\"
elif [ "${TERM%%-*}" = "screen" ]; then
echo -ne "\033P\033]$*\007\033\\"
else
echo -ne "\033]$*\033\\"
fi
)
apply_solarized() {
if [ "$TERM_PROGRAM" = "Apple_Terminal" ]; then
echo "tell application \"Terminal\" to set current settings of selected tab of front window to settings set \"solarized-$BACKGROUND\"" | osascript
else
# http://ethanschoonover.com/solarized
base03=002b36 base02=073642 base01=586e75 base00=657b83
base0=839496 base1=93a1a1 base2=eee8d5 base3=fdf6e3
red=dc322f orange=cb4b16 yellow=b58900 green=859900
cyan=2aa198 blue=268bd2 violet=6c71c4 magenta=d33682
# Determine customization colors based on dark/light background
cursor_color=$red
sel_color=$base01 # only for iTerm2
sel_text_color=$Base2 # only for iTerm2
if [ "$BACKGROUND" = "dark" ]; then
bg_color=$base03
fg_color=$base1
else
bg_color=$base2
fg_color=$base02
fi
# Customize foreground/background/cursor & determine selector for
# setting the ANSI colors below
if [ -n "$ITERM_SESSION_ID" ]; then
setcolor Pg $fg_color # Foreground
setcolor Pi $fg_color # Bold
setcolor Ph $bg_color # Background
setcolor Pj $sel_color # Selection
setcolor Pk $sel_text_color # Selected text
setcolor Pl $cursor_color # Cursor
setcolor Pm $cursor_color # Cursor text
selector="P%s" a=a b=b c=c d=d e=e f=f
else
setcolor "10;#" $fg_color # Foreground
setcolor "11;#" $bg_color # Background
setcolor "12;#" $cursor_color # Cursor
selector="4;%d;#" a=10 b=11 c=12 d=13 e=14 f=15
fi
# Set the ANSI colors
# iTerm2: Pnrrggbb (http://iterm2.com/documentation-escape-codes.html)
# other terminals: 4;n;#rrggbb
# Pn or 4;n;# n rrggbb ANSI name
setcolor $(printf $selector 0) $base02 # 0;30 black
setcolor $(printf $selector 1) $red # 0;31 red
setcolor $(printf $selector 2) $green # 0;32 green
setcolor $(printf $selector 3) $yellow # 1;33 yellow
setcolor $(printf $selector 4) $blue # 0;34 blue
setcolor $(printf $selector 5) $magenta # 0;35 magenta
setcolor $(printf $selector 6) $cyan # 0;36 cyan
setcolor $(printf $selector 7) $base2 # 0;37 white
setcolor $(printf $selector 8) $base03 # 1;30 bold black
setcolor $(printf $selector 9) $orange # 1;31 bold red
setcolor $(printf $selector $a) $base01 # 1;32 bold green
setcolor $(printf $selector $b) $base00 # 1;33 bold yellow
setcolor $(printf $selector $c) $base0 # 1;34 bold blue
setcolor $(printf $selector $d) $violet # 1;35 bold magenta
setcolor $(printf $selector $e) $base1 # 1;36 bold cyan
setcolor $(printf $selector $f) $base3 # 1;37 bold white
fi
if [ "$BACKGROUND" = "light" ]; then
prompt_color="\[\033[0;36m\]" # cyan
else
prompt_color="\[\033[0;34m\]" # blue
fi
export PS1="\n[${prompt_color}\w\[\033[0m\]]\n\$ ";
export PS2=". ";
ls_colors="$HOME/.dircolors/solarized-$BACKGROUND"
if type dircolors &> /dev/null && [ -f $ls_colors ]; then
eval "$(dircolors $ls_colors)"
fi
}
apply_solarized
light() { export BACKGROUND="light" && apply_solarized; }
dark() { export BACKGROUND="dark" && apply_solarized; }
solarized() {
printf "\033[%sm%-7s\033[0m " "1;30" Base03
printf "\033[%sm%-7s\033[0m " "0;30" Base02
printf "\033[%sm%-7s\033[0m " "1;32" Base01
printf "\033[%sm%-7s\033[0m " "1;33" Base00
printf "\033[%sm%-7s\033[0m " "1;34" Base0
printf "\033[%sm%-7s\033[0m " "1;36" Base1
printf "\033[%sm%-7s\033[0m " "0;37" Base2
printf "\033[%sm%-7s\033[0m\n" "1;37" Base3
printf "\033[%sm%-7s\033[0m " "0;31" Red
printf "\033[%sm%-7s\033[0m " "1;31" Orange
printf "\033[%sm%-7s\033[0m " "0;33" Yellow
printf "\033[%sm%-7s\033[0m " "0;32" Green
printf "\033[%sm%-7s\033[0m " "0;36" Cyan
printf "\033[%sm%-7s\033[0m " "0;34" Blue
printf "\033[%sm%-7s\033[0m " "1;35" Violet
printf "\033[%sm%-7s\033[0m\n" "0;35" Magenta
}