123 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# If not running interactively, don't do anything
 | 
						|
case $- in
 | 
						|
    *i*) ;;
 | 
						|
      *) return;;
 | 
						|
esac
 | 
						|
 | 
						|
# 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
 | 
						|
 | 
						|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
 | 
						|
HISTSIZE=1000
 | 
						|
HISTFILESIZE=2000
 | 
						|
 | 
						|
# check the window size after each command and, if necessary,
 | 
						|
# update the values of LINES and COLUMNS.
 | 
						|
shopt -s checkwinsize
 | 
						|
 | 
						|
# make less more friendly for non-text input files, see lesspipe(1)
 | 
						|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
 | 
						|
 | 
						|
# enable color support of ls and also add handy aliases
 | 
						|
if [ -x /usr/bin/dircolors ]; then
 | 
						|
  test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
 | 
						|
  alias ls='ls --color=auto'
 | 
						|
  alias dir='dir --color=auto'
 | 
						|
  alias vdir='vdir --color=auto'
 | 
						|
  alias grep='grep --color=auto'
 | 
						|
  alias fgrep='fgrep --color=auto'
 | 
						|
  alias egrep='egrep --color=auto'
 | 
						|
fi
 | 
						|
 | 
						|
if [ -f ~/.bash_aliases ]; then
 | 
						|
    . ~/.bash_aliases
 | 
						|
fi
 | 
						|
 | 
						|
# enable programmable completion features (you don't need to enable
 | 
						|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
 | 
						|
# sources /etc/bash.bashrc).
 | 
						|
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
 | 
						|
 | 
						|
# Enable vi mode
 | 
						|
set -o vi
 | 
						|
 | 
						|
function _prompt_first_line {
 | 
						|
  local exit_code=$?
 | 
						|
  if [ "$exit_code" = "0" ]; then
 | 
						|
    exit_code=
 | 
						|
  else
 | 
						|
    # If the last command failed, display its error code at the right
 | 
						|
    case $exit_code in
 | 
						|
      129) exit_code="SIGHUP"     ;;  # 128 + 1
 | 
						|
      130) exit_code="SIGINT"     ;;  # 128 + 2
 | 
						|
      131) exit_code="SIGQUIT"    ;;  # 128 + 3
 | 
						|
      132) exit_code="SIGILL"     ;;  # 128 + 4
 | 
						|
      133) exit_code="SIGTRAP"    ;;  # 128 + 5
 | 
						|
      134) exit_code="SIGABRT"    ;;  # 128 + 6
 | 
						|
      134) exit_code="SIGIOT"     ;;  # 128 + 6
 | 
						|
      135) exit_code="SIGBUS"     ;;  # 128 + 7
 | 
						|
      136) exit_code="SIGFPE"     ;;  # 128 + 8
 | 
						|
      137) exit_code="SIGKILL"    ;;  # 128 + 9
 | 
						|
      138) exit_code="SIGUSR1"    ;;  # 128 + 10
 | 
						|
      139) exit_code="SIGSEGV"    ;;  # 128 + 11
 | 
						|
      140) exit_code="SIGUSR2"    ;;  # 128 + 12
 | 
						|
      141) exit_code="SIGPIPE"    ;;  # 128 + 13
 | 
						|
      142) exit_code="SIGALRM"    ;;  # 128 + 14
 | 
						|
      143) exit_code="SIGTERM"    ;;  # 128 + 15
 | 
						|
      144) exit_code="SIGSTKFLT"  ;;  # 128 + 16
 | 
						|
      145) exit_code="SIGCHLD"    ;;  # 128 + 17
 | 
						|
      146) exit_code="SIGCONT"    ;;  # 128 + 18
 | 
						|
      147) exit_code="SIGSTOP"    ;;  # 128 + 19
 | 
						|
      148) exit_code="SIGTSTP"    ;;  # 128 + 20
 | 
						|
      149) exit_code="SIGTTIN"    ;;  # 128 + 21
 | 
						|
      150) exit_code="SIGTTOU"    ;;  # 128 + 22
 | 
						|
      151) exit_code="SIGURG"     ;;  # 128 + 23
 | 
						|
      152) exit_code="SIGXCPU"    ;;  # 128 + 24
 | 
						|
      153) exit_code="SIGXFSZ"    ;;  # 128 + 25
 | 
						|
      154) exit_code="SIGVTALRM"  ;;  # 128 + 26
 | 
						|
      155) exit_code="SIGPROF"    ;;  # 128 + 27
 | 
						|
      156) exit_code="SIGWINCH"   ;;  # 128 + 28
 | 
						|
      157) exit_code="SIGIO"      ;;  # 128 + 29
 | 
						|
      158) exit_code="SIGPWR"     ;;  # 128 + 30
 | 
						|
      159) exit_code="SIGSYS"     ;;  # 128 + 31
 | 
						|
    esac
 | 
						|
    exit_code=" \e[1m\e[31m$exit_code\e[0m"
 | 
						|
  fi
 | 
						|
  local time=$(date +%H:%M:%S)
 | 
						|
  local dir=$PWD
 | 
						|
  [[ "$dir" =~ ^"$HOME"(/|$) ]] && dir="~${dir#$HOME}"
 | 
						|
  # TODO: virtualenv
 | 
						|
  local grey="\e[38;5;244m"
 | 
						|
  local reset="\e[0m"
 | 
						|
  local blue="\e[38;5;37m"
 | 
						|
  echo -e "$grey$time$reset $blue$dir$reset$exit_code"
 | 
						|
}
 | 
						|
 | 
						|
PROMPT_COMMAND=_prompt_first_line
 | 
						|
 | 
						|
yellow="\001\e[38;5;3m\002"
 | 
						|
grey="\001\e[38;5;244m\002"
 | 
						|
reset="\001\e[0m\002"
 | 
						|
 | 
						|
PS1="$yellow\u$reset@$grey\h$reset "
 | 
						|
 | 
						|
# Setup environment variables
 | 
						|
export PATH=$HOME/.local/bin:$PATH
 | 
						|
if command -v nvim > /dev/null; then
 | 
						|
  export EDITOR=nvim
 | 
						|
elif command -v vim > /dev/null; then
 | 
						|
  export EDITOR=vim
 | 
						|
elif command -v vi > /dev/null; then
 | 
						|
  export EDITOR=vi
 | 
						|
fi
 |