case "$HOME" in
- /home/*)
- if [ -L /home ]; then
- START_DIR="`pwd`" &&
- cd "$HOME" &&
- HOME="`pwd`" &&
- cd "$START_DIR"
- fi
- ;;
+ /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
-
-if test -n "$BASH_VERSION"; then
- 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
+ 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
+ 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
+ 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
- cd "`cat \"$MC_PWD_FILE\"`" && /bin/rm "$MC_PWD_FILE"
break
- fi
- done
- fi
+ 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
+ if [ $MC_FOUND = NO ]; then
+ echo "Cannot find mc-wrapper.sh or mc" >&2
+ rc=1
+ fi
- unset MC_FOUND MC_PWD_FILE MC_SLOW MC_TMP_DIR MC_XTERM
+ unset wrapper MC_FOUND MC_PWD_FILE MC_SLOW MC_TMP_DIR MC_XTERM
- return $rc
+ 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 [ $# -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
- }
+ 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; rm -f .Xauthority; }
+ X() { startx >> .Xserver.log 2>&1; cyr; /bin/rm -f .Xauthority; }
fi
x() { exit; }