#!/bin/bash # .bashrc # Craig Jennings # # Bash-specific interactive shell settings. # Aliases, functions, prompt, completions, shell options. # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # ============================================================================= # Environment Variables (from .profile) # ============================================================================= # Source .profile for env vars (needed for non-login interactive shells) [ -f "$HOME/.profile" ] && . "$HOME/.profile" # ============================================================================= # Shell Options # ============================================================================= shopt -s histappend # append to history file, don't overwrite shopt -s checkwinsize # update LINES and COLUMNS after each command shopt -s autocd # cd to directory by typing its name shopt -s cdspell # correct minor spelling errors in cd shopt -s dirspell # correct spelling errors during tab-completion # ============================================================================= # History # ============================================================================= HISTCONTROL=ignoreboth # ignore duplicates and lines starting with space HISTSIZE=100000 HISTFILESIZE=10000000 HISTIGNORE="ls:ll:cd:pwd:bg:fg:history:exit" PROMPT_COMMAND="history -a; history -n" # append and reload after each command # ============================================================================= # Prompt # ============================================================================= PS1='[\d, \t] \u@\H:\w \n$ ' # ============================================================================= # Completions # ============================================================================= if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi # ============================================================================= # Source modular bash configs from .bashrc.d/ # ============================================================================= if [ -d "$HOME/.bashrc.d" ]; then for file in "$HOME/.bashrc.d"/*.sh; do [ -r "$file" ] && . "$file" done unset file fi # ============================================================================= # Tool-specific initialization # ============================================================================= # FZF [ -f "$HOME/.fzf.bash" ] && . "$HOME/.fzf.bash" # Deno [ -f "$HOME/.deno/env" ] && . "$HOME/.deno/env" [ -f "$HOME/.local/share/bash-completion/completions/deno.bash" ] && \ . "$HOME/.local/share/bash-completion/completions/deno.bash" # Zoxide (smart cd) command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init bash)"