[Midnightbsd-cvs] src: dot.mkshrc: mksh file.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Mar 22 01:56:53 EDT 2008


Log Message:
-----------
mksh file.

Added Files:
-----------
    src/etc/root:
        dot.mkshrc (r1.1)

-------------- next part --------------
--- /dev/null
+++ etc/root/dot.mkshrc
@@ -0,0 +1,228 @@
+# $MidnightBSD: src/etc/root/dot.mkshrc,v 1.1 2008/03/22 05:56:53 laffer1 Exp $
+# $MirOS: src/bin/mksh/dot.mkshrc,v 1.28 2008/03/01 21:24:58 tg Rel $
+#-
+# Copyright (c) 2007, 2008
+#	Thorsten “mirabilos” Glaser <tg at mirbsd.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un-
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# Advertising materials mentioning features or use of this work must
+# display the following acknowledgement:
+#	This product includes material provided by Thorsten Glaser.
+#
+# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person's immediate fault when using the work as intended.
+#-
+# sample mksh initialisation file for interactive shells; install as
+# /etc/skel/.mkshrc (as root, for new accounts) or copy to ~/.mkshrc
+
+: ${EDITOR:=/bin/ed} ${TERM:=vt100} ${HOSTNAME:=$(ulimit -c 0;hostname -s 2>&-)}
+[[ $HOSTNAME = @(localhost|*([	 ])) ]] && HOSTNAME=$(ulimit -c 0;hostname 2>&-)
+: ${HOSTNAME:=nil}; PS1='#'; [[ "$(ulimit -c 0; id -u 2>&-)" -eq 0 ]] || PS1='$'
+function precmd {
+	typeset -Ui10 e=$?
+
+	(( e )) && print -n "$e|"
+}
+PS1='$(precmd)${USER:=$(ulimit -c 0;id -un 2>&- || print \?)}@${HOSTNAME%%.*}:$(
+	typeset pfx=~ wd=${PWD:-?}
+	typeset -Ui n=${COLUMNS:-80}/3; (( n = n < 7 ? 7 : n ))
+	wd=${wd/#$pfx/~}
+	pfx=; while (( (${#pfx} + ${#wd}) > n )); do
+		if [[ $wd = */* ]]; then
+			pfx=.../
+			wd=${wd#*/}
+		else
+			pfx=...
+			wd=${wd#?????}
+		fi
+	done; print -nr -- "$pfx$wd") '"$PS1 "
+PS1="$(print -n '\x1\r')$PS1"		# allow colour codes, framed with ^A
+export EDITOR HOSTNAME LESSHISTFILE=- MKSH=$(whence -p mksh) PS1 TERM USER
+alias l='/bin/ls -F'
+alias la='l -a'
+alias ll='l -l'
+alias lo='la -lo'
+alias which='whence -p'
+whence -p rot13 >&- || alias rot13='tr \
+    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \
+    nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
+whence -p hd >&- || function hd {
+	hexdump -e '"%08.8_ax  " 8/1 "%02X " " - " 8/1 "%02X "' \
+	    -e '"  |" "%_p"' -e '"|\n"' "$@"
+}
+
+# Berkeley C shell compatible dirs, popd, and pushd functions
+# Z shell compatible chpwd() hook, used to update DIRSTACK[0]
+DIRSTACKBASE=$(readlink -nf ~/. 2>&- || print -nr -- "$HOME")
+typeset -r DIRSTACKBASE
+set -A DIRSTACK
+function chpwd {
+	DIRSTACK[0]=$(readlink -nf . 2>&- || print -r -- "$PWD")
+	DIRSTACK[0]=${DIRSTACK[0]/#$DIRSTACKBASE/~}
+	:
+}
+chpwd .
+function cd {
+	builtin cd "$@"
+	chpwd "$@"
+}
+function cd_csh {
+	typeset d t=${1/#~/$DIRSTACKBASE}
+
+	if ! d=$(builtin cd "$t" 2>&1); then
+		print -u2 "${1}: ${d##*$t - }."
+		return 1
+	fi
+	cd "$t"
+}
+function dirs {
+	typeset d
+	typeset -i isnoglob=0 fl=0 fv=0 fn=0 cpos=0
+
+	[[ $(set +o) == *-o\ noglob* ]] && isnoglob=1
+	set -o noglob
+	while getopts ":lvn" d; do
+		case $d {
+		(l)	fl=1 ;;
+		(v)	fv=1 ;;
+		(n)	fn=1 ;;
+		(*)	print -u2 'Usage: dirs [-lvn].'
+			return 1 ;;
+		}
+	done
+	shift $((OPTIND - 1))
+	if (( $# > 0 )); then
+		print -u2 'Usage: dirs [-lvn].'
+		return 1
+	fi
+	if (( fv )); then
+		fv=0
+		while (( fv < ${#DIRSTACK[*]} )); do
+			d=${DIRSTACK[fv]}
+			(( fl )) && d=${d/#~/$DIRSTACKBASE}
+			print -r -- "$fv	$d"
+			let fv++
+		done
+	else
+		fv=0
+		while (( fv < ${#DIRSTACK[*]} )); do
+			d=${DIRSTACK[fv]}
+			(( fl )) && d=${d/#~/$DIRSTACKBASE}
+			if (( fn && (cpos+=${#d}+1) >= 79 && ${#d} < 80 )); then
+				print
+				(( cpos = ${#d} + 1 ))
+			fi
+			print -nr -- "$d "
+			let fv++
+		done
+		print
+	fi
+	(( isnoglob )) || set +o noglob
+	return 0
+}
+function popd {
+	typeset d fa
+	typeset -i isnoglob=0 n=1
+
+	[[ $(set +o) == *-o\ noglob* ]] && isnoglob=1
+	set -o noglob
+	while getopts ":0123456789lvn" d; do
+		case $d {
+		(l|v|n)	fa="$fa -$d" ;;
+		(+*)	n=2
+			break ;;
+		(*)	print -u2 'Usage: popd [-lvn] [+<n>].'
+			return 1 ;;
+		}
+	done
+	shift $((OPTIND - n))
+	n=0
+	if (( $# > 1 )); then
+		print -u2 popd: Too many arguments.
+		return 1
+	elif [[ $1 = ++([0-9]) && $1 != +0 ]]; then
+		if (( (n = ${1#+}) >= ${#DIRSTACK[*]} )); then
+			print -u2 popd: Directory stack not that deep.
+			return 1
+		fi
+	elif [[ -n $1 ]]; then
+		print -u2 popd: Bad directory.
+		return 1
+	fi
+	if (( ${#DIRSTACK[*]} < 2 )); then
+		print -u2 popd: Directory stack empty.
+		return 1
+	fi
+	unset DIRSTACK[n]
+	set -A DIRSTACK -- "${DIRSTACK[@]}"
+	cd_csh "${DIRSTACK[0]}" || return 1
+	(( isnoglob )) || set +o noglob
+	dirs $fa
+}
+function pushd {
+	typeset d fa
+	typeset -i isnoglob=0 n=1
+
+	[[ $(set +o) == *-o\ noglob* ]] && isnoglob=1
+	set -o noglob
+	while getopts ":0123456789lvn" d; do
+		case $d {
+		(l|v|n)	fa="$fa -$d" ;;
+		(+*)	n=2
+			break ;;
+		(*)	print -u2 'Usage: pushd [-lvn] [<dir>|+<n>].'
+			return 1 ;;
+		}
+	done
+	shift $((OPTIND - n))
+	if (( $# == 0 )); then
+		if (( ${#DIRSTACK[*]} < 2 )); then
+			print -u2 pushd: No other directory.
+			return 1
+		fi
+		d=${DIRSTACK[1]}
+		DIRSTACK[1]=${DIRSTACK[0]}
+		cd_csh "$d" || return 1
+	elif (( $# > 1 )); then
+		print -u2 pushd: Too many arguments.
+		return 1
+	elif [[ $1 = ++([0-9]) && $1 != +0 ]]; then
+		if (( (n = ${1#+}) >= ${#DIRSTACK[*]} )); then
+			print -u2 pushd: Directory stack not that deep.
+			return 1
+		fi
+		while (( n-- )); do
+			d=${DIRSTACK[0]}
+			unset DIRSTACK[0]
+			set -A DIRSTACK -- "${DIRSTACK[@]}" "$d"
+		done
+		cd_csh "${DIRSTACK[0]}" || return 1
+	else
+		set -A DIRSTACK -- placeholder "${DIRSTACK[@]}"
+		cd_csh "$1" || return 1
+	fi
+	(( isnoglob )) || set +o noglob
+	dirs $fa
+}
+
+# strip comments (and leading/trailing whitespace if IFS is set) from
+# any file(s) given as argument, or stdin if none, and spew to stdout
+function Lstripcom {
+	cat "$@" | { set -o noglob; while read _line; do
+		_line=${_line%%#*}
+		[[ -n $_line ]] && print -r -- $_line
+	done; }
+}
+
+: place customsations above this line!


More information about the Midnightbsd-cvs mailing list