#extends phd_site #implements respond #attr $Title = ".shellrc" #attr $Copyright = 2003 #attr $First = "bashrc.html" #attr $Prev = "profile.html" #attr $Next = "mailcap.html" #attr $Last = "pdbrc.py.html" #attr $alternates = (("Plain text version", "text/plain", "shellrc"),) #def body_html #raw
# sh/ksh/bash run commands
#
# Text version here
#
# Generated by gvim :runtime syntax/2html.vim
#
#
# $HOME/.shellrc
#

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return ;;
esac

# Stop if non-interactive shell
[ -z "$PS1" ] && return

#if [ -x /usr/bin/dircolors ]; then
#   # I don't like these aliases - they work only in command line
#   # but not in scripts I run from command line.
#   # Color parameters must be passed via environment.
#   # So instead I put them in shell scripts in ~/bin.
#   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'
#
#   alias dmesg='dmesg --human'
#fi


case "$HOME" in
    /home/*)
        if [ -L /home ]; then
            START_DIR="`pwd`" &&
            cd "$HOME" &&
            HOME="`pwd`" &&
            cd "$START_DIR"
        fi
    ;;
esac

if test -n "$KSH_VERSION" -o -n "$FCEDIT"; then
    back() { cd - "$@"; }
    j() { jobs; }
fi

# clear screen and history, logout
chlo() { clear; cd; >$HISTFILE; unset HISTFILE; history -c; logout || exit; }

if [ -n "$STY" -a "$WINDOW" != 0 ]; then
    #unset MAILCHECK everywhere except for the 1st GNU screen window
    unset MAILCHECK
fi

if test -x /usr/bin/git >/dev/null 2>&1; then
    # chdir to a directory
    cdgitpath() {
        if [ $# -ne 1 ]; then
            echo "Usage: cdgitpath path_key" >&2
            return 1
        fi

        path_key="$1"
        if [ -z "$path_key" ]; then
            echo "Usage: cdgitpath path_key" >&2
            return 1
        fi

        path_url="`git config --get --path $path_key`"
        if echo "$path_url" | grep -q '^file:/'; then
            path_url="`echo \"$path_url\" | sed 's@^file:/\+@/@'`"
        fi
        cd "$path_url"
    }

    # See https://stackoverflow.com/a/77266926/7976758

    cd_worktree() {
        if [ $# -ne 1 ]; then
            echo "Usage: cd_worktree <branch>" >&2
            return 1
        fi
        path="$(git worktree list | grep -F "$1" | awk '{print $1}')"
        if [ -n "$path" ]; then
            cd "$path"
        else
            echo "Cannot find path for branch '$1'" >&2
            return 1
        fi
    }
fi

include() {
    cfg="$1"
    shift
    if [ -f "./$cfg" -a -r "./$cfg" ]; then
        echo "Reading config file \`$cfg'" 1>&2
        . "./$cfg" "$@"
    elif [ -f "$HOME/lib/config/$cfg" -a -r "$HOME/lib/config/$cfg" ]; then
        echo "Reading config file \`$HOME/lib/config/$cfg'" 1>&2
        . "$HOME/lib/config/$cfg" "$@"
    else
        echo "Cannot find config file \`$cfg'" 1>&2
    fi
}


[ "`type -t mc`" = alias ] && unalias mc
mc() {
    if [ -n "$SLOWTERM" ]; then
        MC_SLOW="--slow"
    fi

    case "$TERM" in
        screen*) # screen, screen.rxvt
            MC_XTERM="-x"
        ;;
    esac

    #TMPDIR="$HOME"/tmp
    #export TMPDIR

    MC_FOUND=NO

    for wrapper in \
            /usr/local/share/mc/bin/mc-wrapper.sh \
            /usr/local/libexec/mc/mc-wrapper.sh \
            /usr/share/mc/bin/mc-wrapper.sh; do
        if [ -r $wrapper ]; then
            . $wrapper $MC_SLOW $MC_XTERM "$@"
            rc=$?
            MC_FOUND=YES
            break
        fi
    done

    if [ $MC_FOUND = NO ]; then
        for mc in /usr/local/bin/mc /usr/bin/mc; do
            if [ -x $mc ]; then
                MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER"
                if [ ! -d MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER" ]; then
                    MC_TMP_DIR="${TMPDIR-/tmp}"
                fi
                MC_PWD_FILE="$MC_TMP_DIR/mc.pwd.$$"
                mc_type="`mc_type.py $mc`"
                if [ "$mc_type" = old ]; then
                    $mc -P $MC_SLOW $MC_XTERM "$@" > "$MC_PWD_FILE"
                elif [ "$mc_type" = new ]; then
                    $mc -P "$MC_PWD_FILE" $MC_SLOW $MC_XTERM "$@"
                else
                    continue
                fi
                rc=$?
                MC_FOUND=YES
                cd "`cat \"$MC_PWD_FILE\"`" && /bin/rm "$MC_PWD_FILE"
                break
            fi
        done
    fi

    if [ $MC_FOUND = NO ]; then
        echo "Cannot find mc-wrapper.sh or mc" >&2
        rc=1
    fi

    unset wrapper MC_FOUND MC_PWD_FILE MC_SLOW MC_TMP_DIR MC_XTERM

    return $rc
}


mkcd() {
    if [ $# -ne 1 ]; then
        echo "Usage: mkcd directory_name" >&2
    elif [ -d "$1" ]; then
        cd "$1"
    elif [ -e "$1" ]; then
        echo "Error: $1 is a file" >&2
    else
        mkdir -p "$1" && cd "$1"
    fi
}


if which tmux >/dev/null 2>&1; then
    tmux() {
        case "$TERM" in
            rxvt)
                TERM=rxvt-unicode command tmux "$@"
            ;;

            *)
                command tmux "$@"
            ;;
        esac
    }
fi


vim() {
    command vim "$@"
    rc=$?
    cd "`cat \"$HOME/tmp/vim/cwd\"`" && /bin/rm "$HOME/tmp/vim/cwd" &&
    return $rc
}


if [ "$SHLVL" -eq 1 ] && which startx >/dev/null 2>&1; then
    X() { startx >> .Xserver.log 2>&1; cyr; /bin/rm -f .Xauthority; }
fi

x() { exit; }
#end raw #end def $phd_site.respond(self)