xref: /openbsd/etc/ksh.kshrc (revision 9a205dcb)
1#	$OpenBSD: ksh.kshrc,v 1.32 2018/05/16 14:01:41 mpf Exp $
2#
3# NAME:
4#	ksh.kshrc - global initialization for ksh
5#
6# DESCRIPTION:
7#	Each invocation of /bin/ksh processes the file pointed
8#	to by $ENV (usually $HOME/.kshrc).
9#	This file is intended as a global .kshrc file for the
10#	Korn shell.  A user's $HOME/.kshrc file simply requires
11#	the line:
12#		. /etc/ksh.kshrc
13#	at or near the start to pick up the defaults in this
14#	file which can then be overridden as desired.
15#
16# SEE ALSO:
17#	$HOME/.kshrc
18#
19
20# RCSid:
21#	$From: ksh.kshrc,v 1.4 1992/12/05 13:14:48 sjg Exp $
22#
23#	@(#)Copyright (c) 1991 Simon J. Gerraty
24#
25#	This file is provided in the hope that it will
26#	be of use.  There is absolutely NO WARRANTY.
27#	Permission to copy, redistribute or otherwise
28#	use this file is hereby granted provided that
29#	the above copyright notice and this notice are
30#	left intact.
31
32case "$-" in
33*i*)	# we are interactive
34	# we may have su'ed so reset these
35	USER=$(id -un)
36	UID=$(id -u)
37	case $UID in
38	0) PS1S='# ';;
39	esac
40	PS1S=${PS1S:-'$ '}
41	HOSTNAME=${HOSTNAME:-$(uname -n)}
42	HOST=${HOSTNAME%%.*}
43
44	PROMPT="$USER:!$PS1S"
45	#PROMPT="<$USER@$HOST:!>$PS1S"
46	PPROMPT='$USER:$PWD:!'"$PS1S"
47	#PPROMPT='<$USER@$HOST:$PWD:!>'"$PS1S"
48	PS1=$PPROMPT
49	# $TTY is the tty we logged in on,
50	# $tty is that which we are in now (might by pty)
51	tty=$(tty)
52	tty=${tty##*/}
53	TTY=${TTY:-$tty}
54	# $console is the system console device
55	console=$(sysctl kern.consdev)
56	console=${console#*=}
57
58	set -o emacs
59
60	alias ls='ls -F'
61	alias h='fc -l | more'
62
63	case "$TERM" in
64	sun*-s)
65		# sun console with status line
66		if [[ $tty != $console ]]; then
67			# ilabel
68			ILS='\033]L'; ILE='\033\\'
69			# window title bar
70			WLS='\033]l'; WLE='\033\\'
71		fi
72		;;
73	xterm*)
74		ILS='\033]1;'; ILE='\007'
75		WLS='\033]2;'; WLE='\007'
76		pgrep -qxs $PPID telnet && export TERM=xterms
77		;;
78	*)	;;
79	esac
80	# do we want window decorations?
81	if [[ -n $ILS ]]; then
82		function ilabel { print -n "${ILS}$*${ILE}">/dev/tty; }
83		function label { print -n "${WLS}$*${WLE}">/dev/tty; }
84
85		alias stripe='label "$USER@$HOST ($tty) - $PWD"'
86		alias istripe='ilabel "$USER@$HOST ($tty)"'
87
88		# Run stuff through this to preserve the exit code
89		function _ignore { local rc=$?; "$@"; return $rc; }
90
91		function wftp { ilabel "ftp $*"; "ftp" "$@"; _ignore eval istripe; }
92
93		function wcd     { \cd "$@";     _ignore eval stripe; }
94
95		function wssh    { \ssh "$@";    _ignore eval 'istripe; stripe'; }
96		function wtelnet { \telnet "$@"; _ignore eval 'istripe; stripe'; }
97		function wsu     { \su "$@";     _ignore eval 'istripe; stripe'; }
98
99		alias su=wsu
100		alias cd=wcd
101		alias ftp=wftp
102		alias ssh=wssh
103		alias telnet=wtelnet
104		eval stripe
105		eval istripe
106		PS1=$PROMPT
107	fi
108	alias quit=exit
109	alias cls=clear
110	alias logout=exit
111	alias bye=exit
112	alias p='ps -l'
113	alias j=jobs
114	alias o='fg %-'
115	alias df='df -k'
116	alias du='du -k'
117	alias rsize='eval $(resize)'
118;;
119*)	# non-interactive
120;;
121esac
122