# # $HOME/.bashrc # # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # Copied from .profile to do minor initialization for non-interactive non-login-shells umask 077 # Fix default PATH if [ "$PATH" = "/usr/local/bin:/usr/bin:/bin:/usr/games" ]; then PATH="$HOME"/bin:"$HOME"/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin fi if [ -n "$DISPLAY" ]; then PATH=$PATH:/usr/games fi # Make `ssh host date` to display in 24-hour format LANG=C # If not running interactively, don't do anything case $- in *i*) ;; *) return ;; esac # Stop if non-interactive shell [ -z "$PS1" ] && return . "$HOME"/.shellrc # This is the default value set by interactive bash # when the global value was unset. Unset it here too. if [ "$HISTFILE" = "$HOME/.bash_history" ]; then history -r unset HISTFILE fi # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # If set, the pattern "**" used in a pathname expansion context will # match all files and zero or more directories and subdirectories. #shopt -s globstar # append to the history file, don't overwrite it shopt -s histappend [ "`type -t ls`" = alias ] && unalias ls [ "`type -t ll`" = alias ] && unalias ll back() { cd - "$@"; } functions() { typeset -f "$@"; } j() { jobs; } if [ -r "$HOME"/admin/prog/bash_prompt ]; then . "$HOME"/admin/prog/bash_prompt set_prompt unset set_prompt else PS1="${debian_chroot:+($debian_chroot)}\u@\h:\W \$SHLVL\\$ " fi if [ -z "$BASH_COMPLETION_COMPAT_DIR" ]; then if [ -d /usr/share/bash-completion -a -r /usr/share/bash-completion/bash_completion ]; then _BASH_COMPLETIONS_DIR=/usr/share/bash-completion/completions . /usr/share/bash-completion/bash_completion elif [ -r /etc/bash_completion ]; then _BASH_COMPLETIONS_DIR=/etc/bash_completion.d . /etc/bash_completion elif [ -d /etc/bash_completion.d ] && [ -n "`ls -A /etc/bash_completion.d`" ]; then _BASH_COMPLETIONS_DIR=/etc/bash_completion.d for _compf in /etc/bash_completion.d/*; do . $_compf done elif [ -d /usr/local/etc/bash_completion.d ] && [ -n "`ls -A /usr/local/etc/bash_completion.d`" ]; then _BASH_COMPLETIONS_DIR=/usr/local/etc/bash_completion.d for _compf in /usr/local/etc/bash_completion.d/*; do . $_compf done else echo "Unknown OS type, cannot source bash_completion" >&2 fi fi has_completion() { [ -n "$_BASH_COMPLETIONS_DIR" -a -d "$_BASH_COMPLETIONS_DIR" -a -r "$_BASH_COMPLETIONS_DIR/$1" ] || complete -p $1 >/dev/null 2>&1 } for cmd in builtin cgmem_nice command dbus-launch exec \ killall man nice nohup pidof pidOf KillAll pgrep pkill psg pswg \ run-hosts su sudo time whence whereis which xargs; do has_completion $cmd || complete -o default -A command $cmd done for cmd in dig host mtr nslookup nc netcat nmap p ping ping6 \ ssh2 s2 socat telnet t tt \ tcptraceroute tcptraceroute6 tracert tracert6 traceroute traceroute6 \ whois wd wget wget-download wget-m wget-wrapper ww; do has_completion $cmd || complete -A hostname $cmd done for cmd in distribute ftp lftp r rsync \ s scp ssh smbclient tcpdump tshark wireshark; do has_completion $cmd || complete -o default -A hostname $cmd done for cmd in bg fg jobs; do has_completion $cmd || complete -A job $cmd done complete -A job j wait for cmd in unset; do has_completion $cmd || complete -A function -A variable $cmd done delegate_completion() { local prog programs prog=$1 has_completion $prog || return 0 shift programs="$@" eval "_${prog}_completion_loader() { _completion_loader $prog if [ x"$DELEGATE_NOSPACE" = x1 ]; then complete -o nospace -F _$prog $programs else complete -F _$prog $programs fi unset _${prog}_completion_loader return 124 }" complete -F _${prog}_completion_loader $programs } delegate_completion make m delegate_completion ping p DELEGATE_NOSPACE=1 delegate_completion rsync r rsync_cgmn rsync_cgmn_recode rsync_cgmn_recode2 delegate_completion ssh s delegate_completion wget wget-m wget-wrapper ww if [ -d "$HOME"/.bash_completion.d ] && [ -n "`ls -A $HOME/.bash_completion.d`" ]; then for _compf in "$HOME"/.bash_completion.d/*; do . $_compf done fi unset _BASH_COMPLETIONS_DIR has_completion delegate_completion if [ -d "$HOME/lib/config" ]; then complete -W "`cd \"$HOME/lib/config\" && echo *`" include fi complete -W "`echo $BROWSER | sed 's/:/ /g'`" start-browser if [ -n "$VIRTUAL_ENV" ] && ! type deactivate >/dev/null 2>&1; then . "$VIRTUAL_ENV/bin/activate" fi # Clean up python virtual environment on exit # See https://virtualenvwrapper.readthedocs.io/en/latest/tips.html#clean-up-environments-on-exit trap '[ "$VIRTUAL_ENV" ] && deactivate' EXIT . virtualenvwrapper_lazy.sh 2>/dev/null if test -d "$HOME"/.pyenv then PYENV_ROOT="$HOME"/.pyenv export PYENV_ROOT PATH="$PYENV_ROOT/bin:$PATH" if which pyenv >/dev/null 2>&1; then # eval "`pyenv init --path`" eval "`pyenv init -`" eval "`pyenv virtualenv-init -`" fi fi if test -x /usr/bin/screen >/dev/null 2>&1; then screen_newwin() { history -a screen "$@" } fi if [ "$SHLVL" -eq 1 -a "`type -t X`" = function ] && which startx >/dev/null 2>&1; then # From https://stackoverflow.com/a/18839557 copy_function() { test -n "$(declare -f "$1")" || return eval "${_/$1/$2}" } rename_function() { copy_function "$@" || return unset -f "$1" } rename_function X _non_bash_X X() { history -a; _non_bash_X; history -r; } fi