# ------------------------------------------- # Case-insensitive globbing (used in pathname expansion) shopt -s nocaseglob # Append to the Bash history file, rather than overwriting it export HISTCONTROL=ignoredups:erasedups # no duplicate entries export HISTSIZE=100000 # big big history export HISTFILESIZE=100000 # big big history shopt -s histappend # append to history, don't overwrite it PROMPT_COMMAND='history -a' # Autocorrect typos in path names when using `cd` shopt -s cdspell # Enable some Bash 4 features when possible: # * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux` # * Recursive globbing, e.g. `echo **/*.txt` for option in autocd globstar; do shopt -s "$option" 2>/dev/null done # Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards [ -e "$HOME/.ssh/config" ] && complete -o "default" -o "nospace" -W "$(grep "^Host" ~/.ssh/config | grep -v "[?*]" | cut -d " " -f2)" scp sftp ssh . /etc/bash_completion export EDITOR=nvim export GOPATH=$HOME/.go export PATH="/home/ntr/.nodejs/bin:$HOME/.cargo/bin:$PATH:/home/ntr/.local/bin:/home/ntr/.dotnet/tools:/usr/local/go/bin:$PATH" # ------------------------------------------------------------------ # aliases # Detect which `ls` flavor is in use if ls --color > /dev/null 2>&1; then # GNU `ls` colorflag="--color" else # OS X `ls` colorflag="-G" fi # List all files colorized in long format alias l="ls -l ${colorflag}" # List all files colorized in long format, including dot files alias la="ls -lah ${colorflag}" # List only directories alias lsd='ls -l ${colorflag} | grep "^d"' # Always use color output for `ls` alias ls="command ls ${colorflag}" export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:' # Enable aliases to be sudo’ed alias sudo='sudo ' alias sl="subl" alias k="kubectl" alias lg="lazygit" alias vim="nvim" # ------------------------------------------------------- # prompt # Linux Colours for gruvbox WHITE="\033[1;39m" BLACK="\033[1;30m" RED="\033[1;31m" GREEN="\033[1;32m" YELLOW="\033[1;33m" BLUE="\033[1;34m" MAGENTA="\033[1;35m" CYAN="\033[1;36m" LG="\033[1;37m" LIGHT_RED="\033[1;91m" LIGHT_GREEN="\033[1;92m" LIGHT_YELLOW="\033[1;93m" LIGHT_BLUE="\033[1;94m" LIGHT_MAGENTA="\033[1;95m" LIGHT_CYAN="\033[1;96m" FG="\033[1;97m" BOLD="" RESET="\033[m" # fi parse_git_dirty () { [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working tree clean" ]] && echo "*" } parse_git_branch () { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1$(parse_git_dirty)/" } PS1="\[${CYAN}\]\w\[$FG\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" on \")\[$MAGENTA\]\$(parse_git_branch)\[$FG\] -> \[$RESET\]"