I originally built my prompt using http://bashrcgenerator.com and, while it's a nice tool for visually building a prompt, it has several limitations on what you're able to create with it. But more importantly to me, it generates a rediculously long string, defines and resets color for every single character, uses both a color and bold escape sequence to use light/bright colors, mixes raw escape sequences and subshells running tput, and as a result is utterly unreadable and unmaintainable.
I intentionally put everything in a function and call it immediately so I may use local vars for the color definitions. I didn't really want to leave them around just in case.
Bash chooses which dotfile to source based on how it gets run. If starting from a login shell, `~/.bash_profile` will get sourced, but if there's not a command in there to source your `~/.bashrc`, you may find yourself having to `exec bash` after starting bash. This can be fixed by adding the following line to your `~/.bash_profile`:
{{{class="prettyprint"
[[ -f ~/.bashrc ]] && . ~/.bashrc
}}}
I also use `~/.bash_profile` for setting numlock while in a tty:
{{{class="prettyprint"
case $(tty) in /dev/tty[0-9]*)
setleds -D +num # (numlock for X is set in ~/.xinitrc)
;;
esac
}}}
The last thing of note in my `~/.bash_profile` is a warning:
{{{class="prettyprint"
# Temporary fix for a systemd bug related to systemd --user timers that run on login
I work with Dell machines a lot, and when dealing with hardware problems, it's nice to have the service tag handy. Lucky for me, the service tag is easily retrieveable using `dmidecode(1)`, so I made a function for it.