dotfiles/.bashrc

168 lines
4.9 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Blake's bashrc
# ZSH supremacy
# 99.99% of this is the default bashrc for manjaro, I just liked it so I took
# it, and I don't use bash enough to care. The main job of this is to load my
# basic shell configuration, which works in any POSIX shell.
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Just in case
export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"${XDG_CONFIG_HOME:-"$HOME/.config"}/shell"}"
# Source standard shell configuration
[ -f "$SHELL_CONFIG_DIR/shrc" ] && source "$SHELL_CONFIG_DIR/shrc"
### (mostly) Manjaro default bashrc >>>
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
# Change the window title of X terminals
case ${TERM} in
(screen*)
PROMPT_COMMAND=('echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"')
;;
(xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*|*)
PROMPT_COMMAND=('echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"')
;;
esac
use_color=true
# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS. Try to use the external file
# first to take advantage of user additions. Use internal bash
# globbing instead of external grep binary.
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
[[ -z ${match_lhs} ]] \
&& type -P dircolors >/dev/null \
&& match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
if ${use_color} ; then
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
if type -P dircolors >/dev/null ; then
# shellcheck disable=SC2046
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi
fi
# given a list of colors, make variables called `col_COLOR`
# $@ - the color list (color=number)
# $color_mod - a modifier to apply to the color (01 = bold, 00 = nothing)
make_colors() {
for a; do
local -- cname="col_${a%%=*}${modname:+_}${modname:-}"
local -- val="${a#*=}"
local -- ccode="${val}"
declare -g "$cname"='['"$ccode"m
# declare -p "$cname"
done
}
# set prompt (see: man bash -> search for '^PROMPTING')
make_colors \
red=31 green=32 yellow=33 blue=34 purple=35 turquoise=36 white=38 white=37 \
normal=00 bold=01 quiet=02 italic=03 under=04 bg=07 gone=08 strike=09
col_end='(B'
# shellcheck disable=SC2154
if [[ ${EUID} == 0 ]] ; then
# shellcheck disable=
ps1_color1="$col_bold$col_red"
ps1_color2="$col_bold$col_blue"
host='\h'
else
ps1_color1="$col_bold$col_green"
ps1_color2="$col_bold$col_white"
host='\u@\h'
fi
PS1='$ps1_color1['$host'$ps1_color2 \W$ps1_color1]$status\$$col_end '
# assign $status to the exit code of the previous command, color it white on failure
fmt_exit_status() {
# status=$?
case $? in
(0)
status=" "
;;
(*)
status="$col_normal$col_white$?$ps1_color1"
;;
esac
}
PROMPT_COMMAND+=("fmt_exit_status")
else
if [[ ${EUID} == 0 ]] ; then
# show root@ when we don't have colors
PS1='\u@\h \W \$ '
else
PS1='\u@\h \w \$ '
fi
fi
unset use_color safe_term match_lhs sh
alias cp="cp -i" # confirm before overwriting something
alias df='df -h' # human-readable sizes
alias free='free -m' # show sizes in MB
alias np='nano -w PKGBUILD'
alias more=less
xhost +local:root > /dev/null 2>&1
complete -cf sudo
# Bash won't get SIGWINCH if another process is in the foreground.
# Enable checkwinsize so that bash will check the terminal size when
# it regains control. #65623
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
shopt -s checkwinsize
shopt -s expand_aliases
# export QT_SELECT=4
# Enable history appending instead of overwriting. #139609
shopt -s histappend
#
# # ex - archive extractor
# # usage: ex <file>
ex ()
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via ex()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# <<<
# vim:fdm=marker:fmr=>>>,<<<:et:ft=bash:sw=3:ts=3