TERM=xterm-256color
fi
+ # copying from the alacritty example above,
+ if [[ $TERM == xterm-kitty ]]; then
+ if [[ ! -e /usr/share/terminfo/x/xterm-kitty ]]; then
+ TERM=xterm-256color
+ else
+ if [[ -e /a/opt/kitty/shell-integration/bash/kitty.bash ]]; then
+ KITTY_SHELL_INTEGRATION=t
+ source /a/opt/kitty/shell-integration/bash/kitty.bash
+ fi
+ fi
+ fi
# todo: not sure this works in sakura
#stty werase undef
#bind "\C-w": kill-region
# sakura == xterm-256color
# konsole == xterm
- if [[ $TERM == xterm* ]]; then
+ if [[ $TERM != xterm-kitty && $TERM == xterm* ]]; then
# control + arrow keys. for other terminals, see http://unix.stackexchange.com/questions/10806/how-to-change-previous-next-word-shortcut-in-bash
bind '"\e[1;5C": shell-forward-word' 2>/dev/null
bind '"\e[1;5D": shell-backward-word' 2>/dev/null
else
# make ctrl-backspace work. for konsole, i fixed it through
# /home/iank/.local/share/konsole/default.keytab
- stty werase '^h'
+ stty werase ^h
bind '"\eOc": shell-forward-word'
bind '"\eOd": shell-backward-word'
fi
if grep -qF /home/iank/.iank/e/e /etc/auto.iank /etc/exports &>/dev/null; then
export EMACSDIR=/home/iank/.iank/e/e
fi
+ path-add $bashrc_dir
fi
fi
source /usr/share/wcd/wcd-include.sh
fi
-if [[ -s /a/bin/small-misc-bash/ll-function ]]; then
- source /a/bin/small-misc-bash/ll-function
-elif [[ -s $bashrc_dir/ll-function ]]; then
- # shellcheck source=/a/bin/small-misc-bash/ll-function
- source $bashrc_dir/ll-function
-fi
+
+mysrc() {
+ local path dir file
+ path=$1
+ dir=${path%/*}
+ file=${path##*/}
+ if [[ -s $path ]]; then
+ source $path
+ elif [[ -s $bashrc_dir/$file ]]; then
+ source $bashrc_dir/$file
+ fi
+}
+mysrc /a/bin/small-misc-bash/ll-function
+mysrc /a/bin/distro-functions/src/package-manager-abstractions
# * functions
echo no args
fi
for arg; do
- printf "%qEOL\n" "${!arg}"
- printf "%s" "${!arg}" |& hexdump -C
+ if [[ -v $arg ]]; then
+ printf "%qEOL\n" "${!arg}"
+ printf "%s" "${!arg}" |& hexdump -C
+ else
+ echo arg $arg is unset
+ fi
done
}
-o -name .undo-tree-history -prune \) -type f 2>/dev/null
}
+# todo: id like to do maybe a daily or hourly cronjob to
+# check that my history file size is increasing. Ive had it
+# inexplicably truncated in the past.
+histrm() {
+ history -n
+ history | awk -v IGNORECASE=1 '{ a=$1; sub(/^( *[^ ]+){4} */, "") }; /'"$*"'/'
+ read -p "press anything but contrl-c to delete"
+ for entry in $(history | awk -v IGNORECASE=1 '{ a=$1; sub(/^( *[^ ]+){4} */, "") }; /'"$*"'/ { print a }' | tac); do
+ history -d $entry
+ done
+ history -w
+}
+
# mail related
frozen() {
rm -rf /tmp/frozen
sk() {
- # 2029: "unescaped, this expands on the client side." yes, I know how ssh works
- # 2164: "Use 'cd ... || exit' or 'cd ... || return' in case cd fails." i have automatic error handling
- # 2086: unquoted $var
+
+
+ # note, if you do something like this
+ # x=( prefix* )
+ # then disable the warning with:
+ # shellcheck disable=SC2206 # globbing is intended
+
+ # 2029: "unescaped, this expands on the client side.": yes, I know how ssh works
+ # 2164: "Use 'cd ... || exit' or 'cd ... || return' in case cd fails.": i have automatic error handling
+ # 2086: unquoted $var: Quoting every var I set is way too much quotes.
+ # 2068: Double quote array expansions to avoid re-splitting elements: same as above.
+ # 2033: command arg is a function name: too many false positives.
+
+
+ # these ones I had disabled, but without a good written explanation, so enabling them temporarily
# 2046: unquoted $(cmd)
- # 2068: Double quote array expansions to avoid re-splitting elements.
# 2119: Functions with optional args get bad warnings when none are passed.
- # 2033: too many false positives for thing that will never work, passing shell function to find.
- # i had -x as an arg, but debian testing(stretch) doesn\'t support it
- shellcheck -x -e 2029,2164,2086,2046,2068,2119,2033 "$@" || return $?
- # had this before. not sure what it is 2119
+
+ shellcheck -W 999 -x -e 2029,2164,2086,2068,2033 "$@" || return $?
}
ccomp ssh sl slr sss ssk
# plain ssh
ssh() {
- if [[ $TERM == alacritty ]]; then
+ if [[ $TERM == alacritty || $TERM == xterm-kitty ]]; then
TERM=xterm-256color LC_USEBASHRC=t command ssh "$@"
else
LC_USEBASHRC=t command ssh "$@"
if [[ $EUID != 0 ]] && [[ $DID_SUDO ]]; then
ps_char="SUDO $ps_char"
fi
+ if [[ ! $HISTFILE ]]; then
+ ps_char="NOHIST $ps_char"
+ fi
PS1="${PS1%"${PS1#*[wW]}"} \[$ps_color\]$ps_char\[$term_nocolor\] "
# set titlebar. instead, using more advanced