diff options
Diffstat (limited to 'src/dot.mkshrc')
-rw-r--r-- | src/dot.mkshrc | 68 |
1 files changed, 57 insertions, 11 deletions
diff --git a/src/dot.mkshrc b/src/dot.mkshrc index 4a3dfea..f06dbc6 100644 --- a/src/dot.mkshrc +++ b/src/dot.mkshrc @@ -1,8 +1,9 @@ # $Id$ -# $MirOS: src/bin/mksh/dot.mkshrc,v 1.121 2017/08/08 21:10:21 tg Exp $ +# $MirOS: src/bin/mksh/dot.mkshrc,v 1.128 2020/04/13 18:39:03 tg Exp $ #- # Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012, 2013, 2014, 2015, 2016, 2017 +# 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, +# 2020 # mirabilos <m@mirbsd.org> # # Provided that these terms and disclaimer and all copyright notices @@ -64,11 +65,10 @@ for EDITOR in "${EDITOR:-}" jupp jstar mcedit ed vi; do done \\builtin alias ls=ls l='ls -F' la='l -a' ll='l -l' lo='l -alo' -\: "${HOSTNAME:=$(\\builtin ulimit -c 0; \\builtin print -r -- $(hostname \ - 2>/dev/null))}${EDITOR:=/bin/ed}${TERM:=vt100}${USER:=$(\\builtin ulimit \ - -c 0; id -un 2>/dev/null)}${USER:=?}" +\: "${EDITOR:=/bin/ed}${TERM:=vt100}${USER:=$(\\builtin ulimit -c 0; id -un \ + 2>/dev/null)}${HOSTNAME:=$(\\builtin ulimit -c 0; hostname 2>/dev/null)}" [[ $HOSTNAME = ?(?(ip6-)localhost?(6)) ]] && HOSTNAME=nil; \\builtin unalias ls -\\builtin export EDITOR HOSTNAME TERM USER +\\builtin export EDITOR HOSTNAME TERM USER="${USER:-?}" # minimal support for lksh users if [[ $KSH_VERSION = *LEGACY\ KSH* ]]; then @@ -109,7 +109,7 @@ elif \\builtin command -v hexdump >/dev/null; then } else function hd { - \\builtin cat "$@" | hd_mksh "$@" + \\builtin cat "$@" | hd_mksh } fi @@ -150,6 +150,48 @@ function hd_mksh { (( hv == 2147483647 )) || \\builtin print -r -- "$dasc|" } +function which { + \\builtin typeset p x c + \\builtin typeset -i a=0 rv=2 e + \\builtin set +e + \\builtin set -o noglob + + while \\builtin getopts "a" x; do + case $x { + (a) a=1 ;; + (+a) a=0 ;; + (*) \\builtin print -ru2 'Usage: which [-a] name [...]' + \\builtin return 255 ;; + } + done + \\builtin shift $((OPTIND - 1)) + + # vvvvvvvvvvvvvvvvvvvv should be def_path + p=${PATH-/usr/bin$PATHSEP/bin} + # ^ no colon! + + # trailing PATHSEP vs field splitting + [[ $p = *"$PATHSEP" ]] && p+=. + + IFS=$PATHSEP + \\builtin set -A p -- ${p:-.} + IFS=$' \t\n' + + for x in "$@"; do + if (( !a )) || [[ $x = */* ]]; then + \\builtin whence -p -- "$x" + e=$? + else + e=1 + for c in "${p[@]}"; do + PATH=${c:-.} \\builtin whence -p -- "$x" && e=0 + done + fi + (( rv = (e == 0) ? (rv & ~2) : (rv == 2 ? 2 : 1) )) + done + \\builtin return $rv +} + # Berkeley C shell compatible dirs, popd, and pushd functions # Z shell compatible chpwd() hook, used to update DIRSTACK[0] DIRSTACKBASE=$(\\builtin realpath ~/. 2>/dev/null || \ @@ -450,7 +492,6 @@ function enable { i_func[nfunc++]=false i_func[nfunc++]=fc i_func[nfunc++]=getopts - i_func[nfunc++]=global i_func[nfunc++]=jobs i_func[nfunc++]=kill i_func[nfunc++]=let @@ -499,6 +540,7 @@ function enable { i_func[nfunc++]=smores i_func[nfunc++]=hd i_func[nfunc++]=hd_mksh + i_func[nfunc++]=which i_func[nfunc++]=chpwd i_func[nfunc++]=cd i_func[nfunc++]=cd_csh @@ -604,7 +646,7 @@ function enable { \: place customisations below this line -# some defaults follow — you are supposed to adjust these to your +# some defaults / samples which you are supposed to adjust to your # liking; by default we add ~/.etc/bin and ~/bin (whichever exist) # to $PATH, set $SHELL to mksh, set some defaults for man and less # and show a few more possible things for users to begin moving in @@ -618,11 +660,15 @@ done \\builtin export SHELL=$MKSH MANWIDTH=80 LESSHISTFILE=- \\builtin alias cls='\\builtin print -n \\ec' -#\\builtin unset LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_IDENTIFICATION LC_MONETARY \ -# LC_NAME LC_NUMERIC LC_TELEPHONE LC_TIME +#\\builtin unset LC_ADDRESS LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +# LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +# LC_TELEPHONE LC_TIME LANGUAGE LANG LC_ALL #p=en_GB.UTF-8 #\\builtin export LANG=C LC_CTYPE=$p LC_MEASUREMENT=$p LC_MESSAGES=$p LC_PAPER=$p +#\\builtin export LANG=C.UTF-8 LC_CTYPE=C.UTF-8 +#\\builtin export LC_ALL=C.UTF-8 #\\builtin set -U +#[[ ${LC_ALL:-${LC_CTYPE:-${LANG:-}}} = *[Uu][Tt][Ff]?(-)8* ]] || \\builtin set +U \\builtin unset p |