#! /usr/bin/env bash # Use the iterm2 material theme in the root directory of the essentials repository. For linux, # you will need to source a material theme color scheme for your terminal (for XFCE use nord in the xfce # themes folder). # This monstrosity returns the directory of the .bashrc from it's symlinked source so we can # call script files correctly. symlink_dir=$( cd "$( dirname "`readlink -f ${BASH_SOURCE[0]}`" )" && pwd ) # -------------------------------- SETUP -------------------------------- # # Store private information (exports, keys, etc) in .bash_private. if [[ -f ~/.bash_private ]]; then source ~/.bash_private echo ".bash_private loaded" fi if [ -f ~/.inputrc ]; then bind -f ~/.inputrc else echo "No .inputrc detected" fi if [[ "$OSTYPE" == "darwin"* ]]; then if [ -f ~/.macrc ]; then source ~/.macrc fi fi # ------------------------------ END SETUP ------------------------------ # # -------------------- FUNCTIONS -------------------- # parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /' } # If you ever needed weather... weather() { curl wttr.in } # ------------------ END FUNCTIONS ------------------ # # -------------- EXPORTS --------------# export CC=$(which clang) export CXX=$(which clang++) export OPENSSL_ROOT_DIR=$(which openssl) export PATH="/usr/local/opt/openjdk/bin:$PATH" # Ignore duplicates in history to make history less of a hassle to use. export HISTCONTROL=ignoredups # ------------ END EXPORTS ------------# # ---------------- ALIASES ----------------# # Useful global functions alias cgen=$symlink_dir/scripts/cgen.sh if [[ "$OS_TYPE" != "gnu-linux" ]]; then alias python='python3' fi alias vim='nvim' # -------------- END ALIASES --------------# # ----------------------------------------- INITIALIZATIONS -------------------------------------- # if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi eval "$(pyenv virtualenv-init -)" # Test for the `bash-completion` package. Installing this adds better tab completion to bash. [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" # --------------------------------------- END INITIALIZATIONS ------------------------------------ # # ------------------------------------------ FORMATTING ------------------------------------------ # # Better color handling so scrolling doesn't get broken. # Note for Cygwin you need ncurses for this to work. reset=$(tput sgr0) green=$(tput setaf 2) blue=$(tput setaf 4) white=$(tput setaf 7) bold=$(tput bold || tput md) export PROMPT_DIRTRIM=2 # Important note for PS1 modification - everything non-printable must be escaped with `\[` and `\]`. Otherwise readline # fails to track the prompt right and things get messed up when you input long strings. if [[ "$OSTYPE" == "linux-gnu" ]]; then # I had some rendering issues running in XFCE unless I added an extra space at the end. export PS1='\[$bold\]\[$white\]\u@\h\[$reset\]: \[$bold\]\[$blue\]\w\[$reset\] \[$green\]\[$(parse_git_branch)\]\[$reset\]\[$bold\]\[$white\]⇨\[$reset\] ' else export PS1='\[$bold\]\[$white\]\u@\h\[$reset\]: \[$bold\]\[$blue\]\w\[$reset\] \[$green\]\[$(parse_git_branch)\]\[$reset\]\[$bold\]\[$white\]⇨\[$reset\] ' fi