You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.3 KiB
108 lines
3.3 KiB
#! /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
|
|
|