227 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Cheetah
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Cheetah
		
	
	
	
	
	
#
 | 
						|
# ~/.bashrc
 | 
						|
#
 | 
						|
 | 
						|
# If not running interactively, don't do anything
 | 
						|
[[ $- != *i* ]] && return
 | 
						|
 | 
						|
[[ "$(whoami)" = "root" ]] && return
 | 
						|
 | 
						|
[[ -z "$FUNCNEST" ]] && export FUNCNEST=100          # limits recursive functions, see 'man bash'
 | 
						|
 | 
						|
# disable history
 | 
						|
HISTFILE=/dev/null
 | 
						|
 | 
						|
## Use the up and down arrow keys for finding a command in history
 | 
						|
## (you can write some initial letters of the command first).
 | 
						|
bind '"\e[A":history-search-backward'
 | 
						|
bind '"\e[B":history-search-forward'
 | 
						|
 | 
						|
# check the window size after each command and, if necessary,
 | 
						|
# update the values of LINES and COLUMNS.
 | 
						|
shopt -s checkwinsize
 | 
						|
 | 
						|
#  add home bin
 | 
						|
if [ -d "$HOME/.local/bin" ]; then
 | 
						|
    export PATH="$HOME/.local/bin:$PATH"
 | 
						|
fi
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
#  EDITOR
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
 | 
						|
if hash nvim 2>/dev/null; then
 | 
						|
  export EDITOR=nvim
 | 
						|
elif hash vim 2>/dev/null; then
 | 
						|
  export EDITOR=vim
 | 
						|
elif hash vi 2>/dev/null; then 
 | 
						|
  export EDITOR=vi
 | 
						|
else
 | 
						|
  export EDITOR=nano
 | 
						|
fi
 | 
						|
 | 
						|
export SVN_EDITOR=$EDITOR
 | 
						|
export GIT_EDITOR=$EDITOR
 | 
						|
export VISUAL=$EDITOR
 | 
						|
alias vi=$EDITOR
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
#  ALIASES
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
 | 
						|
if hash lsd 2>/dev/null; then
 | 
						|
  alias ls="lsd"
 | 
						|
  alias ll="ls -l"
 | 
						|
  alias la="ls -la"
 | 
						|
elif hash exa 2>/dev/null; then
 | 
						|
  alias ll="exa --long --group-directories-first --classify --git"
 | 
						|
  alias la="ll --all"
 | 
						|
else
 | 
						|
  alias ll="ls -lv --group-directories-first --ignore=.." # show long listing but no hidden dotfiles except "."
 | 
						|
  alias la='ls -lav' 
 | 
						|
  test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)
 | 
						|
fi
 | 
						|
 | 
						|
alias rm='rm --interactive --verbose'
 | 
						|
alias mv='mv --interactive --verbose'
 | 
						|
alias cp='cp --verbose --interactive'
 | 
						|
 | 
						|
if hash wget 2>/dev/null; then
 | 
						|
  alias wget='wget -c'
 | 
						|
fi
 | 
						|
 | 
						|
alias dmesg='dmesg -T'
 | 
						|
alias grep='grep --color'
 | 
						|
 | 
						|
if hash tmux 2>/dev/null; then
 | 
						|
  alias ta='tmux attach'
 | 
						|
  alias tkill="for s in \$(tmux list-sessions | awk -F ':' '{print \$1}' | fzf); do tmux kill-session -t \$s; done;"
 | 
						|
fi
 | 
						|
 | 
						|
if hash tig 2>/dev/null; then
 | 
						|
  alias tiga='tig --all'
 | 
						|
fi 
 | 
						|
 | 
						|
if hash fd 2>/dev/null; then
 | 
						|
  alias fdfind='fd'
 | 
						|
fi
 | 
						|
 | 
						|
if hash nix-env 2>/dev/null; then
 | 
						|
  alias nix-update='nix-channel --update && nix-env -u'
 | 
						|
 | 
						|
  nix-search() {
 | 
						|
    nix-env -qa --description ".*$1.*"
 | 
						|
  }
 | 
						|
fi
 | 
						|
 | 
						|
alias cdd='cd {{ .deploydir }}'
 | 
						|
export cdd={{ .deploydir }}
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
#  TMUX
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
 | 
						|
# Function to set tmux window title
 | 
						|
function set_tmux_title {
 | 
						|
    if [ -n "$TMUX" ]; then
 | 
						|
        tmux rename-window "$1"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
# SSH wrapper to change the tmux title locally
 | 
						|
function ssh() {
 | 
						|
    if [ -n "$TMUX" ]; then
 | 
						|
        # Save the original tmux window title
 | 
						|
        original_title=$(tmux display-message -p '#W')
 | 
						|
    fi
 | 
						|
    
 | 
						|
    # Change tmux title before connecting
 | 
						|
    set_tmux_title "SSH $1"
 | 
						|
    
 | 
						|
    # Run the actual ssh command with all arguments
 | 
						|
    command ssh "$@"
 | 
						|
    
 | 
						|
    # Restore the original tmux window title after disconnecting
 | 
						|
    if [ -n "$TMUX" ]; then
 | 
						|
        set_tmux_title "$original_title"
 | 
						|
        tmux set-window-option automatic-rename on
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
export FAVORITE_COMMAND1="{{ .tmux_favorite1 }}"
 | 
						|
export FAVORITE_COMMAND2="{{ .tmux_favorite2 }}"
 | 
						|
export FAVORITE_COMMAND3="{{ .tmux_favorite3 }}"
 | 
						|
export FAVORITE_COMMAND4="{{ .tmux_favorite4 }}"
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
#  COMPLETIONS
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make
 | 
						|
 | 
						|
# -------------------------------------------------------------
 | 
						|
# Source .bashrc.d files
 | 
						|
# -------------------------------------------------------------
 | 
						|
 | 
						|
if [ -d "$HOME/.bashrc.d/" ]; then
 | 
						|
    for file in ~/.bashrc.d/*.bashrc; do
 | 
						|
            . "$file"
 | 
						|
    done
 | 
						|
fi
 | 
						|
 | 
						|
if [ -f "$HOME/.bashrc.local" ]; then
 | 
						|
  source $HOME/.bashrc.local
 | 
						|
fi 
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
# History 
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
 | 
						|
# don't put duplicate lines or lines starting with space in the history.
 | 
						|
# See bash(1) for more options
 | 
						|
HISTCONTROL=ignoreboth
 | 
						|
 | 
						|
# append to the history file, don't overwrite it
 | 
						|
shopt -s histappend
 | 
						|
 | 
						|
# store multiline commands
 | 
						|
shopt -s cmdhist
 | 
						|
 | 
						|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
 | 
						|
HISTSIZE=2000
 | 
						|
HISTFILESIZE=2000
 | 
						|
 | 
						|
# don't story history commands
 | 
						|
HISTIGNORE=history*
 | 
						|
 | 
						|
HISTFILE=~/.bash_history
 | 
						|
 | 
						|
# Hishtory (https://github.com/ddworken/hishtory)
 | 
						|
if [ -d "$HOME/.hishtory/" ]; then  
 | 
						|
  export PATH="$PATH:$HOME/.hishtory"
 | 
						|
  source $HOME/.hishtory/config.sh
 | 
						|
  hishtory config-set displayed-columns CWD Command
 | 
						|
fi
 | 
						|
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
#  PROMPT
 | 
						|
# ---------------------------------------------------------------------------
 | 
						|
 | 
						|
# starship must be evaluated at the end to catch properly error codes
 | 
						|
if hash starship 2>/dev/null; then  
 | 
						|
  eval "$(starship init bash)"
 | 
						|
else
 | 
						|
  # set a minimalist prompt
 | 
						|
  red='\[\e[0;31m\]'      # Red
 | 
						|
  green='\[\e[0;32m\]'    # Green
 | 
						|
  blue='\[\e[0;34m\]'     # Bold Blue
 | 
						|
  boldred='\[\e[1;31m\]'  # Bold Red
 | 
						|
  reset='\[\e[0m\]'       # Text Reset
 | 
						|
 | 
						|
  if [ "$USER" = "root" ] ; then
 | 
						|
    # $bold$red
 | 
						|
    PROMPT_USER_COLOR=$boldred 
 | 
						|
    PROMPT_SYMBOL="#"
 | 
						|
  else
 | 
						|
    PROMPT_USER_COLOR=$green
 | 
						|
    PROMPT_SYMBOL="$"
 | 
						|
  fi
 | 
						|
 | 
						|
  if [[ -n "$SSH_CLIENT$SSH2_CLIENT$SSH_TTY" ]] ; then
 | 
						|
    PROMPT_SSH="@\h"
 | 
						|
  else
 | 
						|
    PROMPT_SSH=""
 | 
						|
  fi
 | 
						|
 | 
						|
  PS1="$PROMPT_USER_COLOR\u$PROMPT_SSH $blue\w$reset $PROMPT_SYMBOL "
 | 
						|
 | 
						|
  if [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then
 | 
						|
      GIT_PROMPT_ONLY_IN_REPO=1
 | 
						|
      GIT_PROMPT_IGNORE_SUBMODULES=1
 | 
						|
      GIT_PROMPT_WITH_VIRTUAL_ENV=0
 | 
						|
      GIT_PROMPT_THEME=Solarized_Yax
 | 
						|
      source $HOME/.bash-git-prompt/gitprompt.sh
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
# enable history
 | 
						|
set -o history
 |