diff options
Diffstat (limited to 'dotfiles/common/.bashrc')
| -rw-r--r-- | dotfiles/common/.bashrc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dotfiles/common/.bashrc b/dotfiles/common/.bashrc new file mode 100644 index 0000000..b2177d9 --- /dev/null +++ b/dotfiles/common/.bashrc @@ -0,0 +1,76 @@ +#!/bin/bash +# .bashrc +# Craig Jennings <c@cjennings.net> +# +# 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)" |
