2022-08-27 15:12:17 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
2022-10-11 21:45:41 -07:00
|
|
|
# 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.
|
2021-08-07 21:24:26 -07:00
|
|
|
|
|
|
|
# If not running interactively, don't do anything
|
|
|
|
[[ $- != *i* ]] && return
|
|
|
|
|
BIG UPDATE: shell: add profile, move calc and mkcd to files, move
shell-independent config (aliases, functions, env vars, options) to
.config/shell/shrc, make bashrc and zshrc use the same shrc, add TTY
detection for changing caps lock to escape in a TTY, add option for
skipping plugin loading, and maybe a few other things
If this goes well, I'll be tempted to call this version 1.0. Things
have been very stable for the last few months. Although, since it's the
first really big change in a while, that might make it version 2.0?
Should dotfiles have big version numbers at all? Probably not.
2022-04-08 13:36:29 -07:00
|
|
|
# Just in case
|
|
|
|
export SHELL_CONFIG_DIR="${SHELL_CONFIG_DIR:-"${XDG_CONFIG_HOME:-"$HOME/.config"}/shell"}"
|
2021-08-07 21:24:26 -07:00
|
|
|
|
BIG UPDATE: shell: add profile, move calc and mkcd to files, move
shell-independent config (aliases, functions, env vars, options) to
.config/shell/shrc, make bashrc and zshrc use the same shrc, add TTY
detection for changing caps lock to escape in a TTY, add option for
skipping plugin loading, and maybe a few other things
If this goes well, I'll be tempted to call this version 1.0. Things
have been very stable for the last few months. Although, since it's the
first really big change in a while, that might make it version 2.0?
Should dotfiles have big version numbers at all? Probably not.
2022-04-08 13:36:29 -07:00
|
|
|
# Source standard shell configuration
|
|
|
|
[ -f "$SHELL_CONFIG_DIR/shrc" ] && source "$SHELL_CONFIG_DIR/shrc"
|
|
|
|
|
2024-09-11 00:12:48 -07:00
|
|
|
### (mostly) Manjaro default bashrc >>>
|
2021-08-07 21:24:26 -07:00
|
|
|
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
|
|
|
|
|
|
|
|
# Change the window title of X terminals
|
|
|
|
case ${TERM} in
|
|
|
|
xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*)
|
|
|
|
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"'
|
|
|
|
;;
|
|
|
|
screen*)
|
|
|
|
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"'
|
|
|
|
;;
|
|
|
|
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
|
|
|
|
if [[ -f ~/.dir_colors ]] ; then
|
|
|
|
eval $(dircolors -b ~/.dir_colors)
|
|
|
|
elif [[ -f /etc/DIR_COLORS ]] ; then
|
|
|
|
eval $(dircolors -b /etc/DIR_COLORS)
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ ${EUID} == 0 ]] ; then
|
|
|
|
PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
|
|
|
|
else
|
|
|
|
PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
|
|
|
|
fi
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|
BIG UPDATE: shell: add profile, move calc and mkcd to files, move
shell-independent config (aliases, functions, env vars, options) to
.config/shell/shrc, make bashrc and zshrc use the same shrc, add TTY
detection for changing caps lock to escape in a TTY, add option for
skipping plugin loading, and maybe a few other things
If this goes well, I'll be tempted to call this version 1.0. Things
have been very stable for the last few months. Although, since it's the
first really big change in a while, that might make it version 2.0?
Should dotfiles have big version numbers at all? Probably not.
2022-04-08 13:36:29 -07:00
|
|
|
# <<<
|
|
|
|
|
|
|
|
# vim:fdm=marker:fmr=>>>,<<<:et:ft=bash:sw=3:ts=3
|