commit ca09cf74b12e57e976db95871b1f07407464bbcb Author: Nathan Rashleigh Date: Sun Sep 20 13:35:22 2026 +1000 bashrc diff --git a/dot_bashrc b/dot_bashrc new file mode 100644 index 0000000..6ba4f71 --- /dev/null +++ b/dot_bashrc @@ -0,0 +1,95 @@ +# ------------------------------------------- + +# 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\]" +