Annotation of src/etc/ksh.kshrc, Revision 1.2
1.1 downsj 1: :
1.2 ! kstailey 2: # $OpenBSD: ksh.kshrc,v 1.1 1996/08/14 08:28:04 downsj Exp $
1.1 downsj 3: #
4: # NAME:
5: # ksh.kshrc - global initialization for ksh
6: #
7: # DESCRIPTION:
8: # Each invocation of /bin/ksh processes the file pointed
9: # to by $ENV (usually $HOME/.kshrc).
10: # This file is intended as a global .kshrc file for the
11: # Korn shell. A user's $HOME/.kshrc file simply requires
12: # the line:
13: # . /etc/ksh.kshrc
14: # at or near the start to pick up the defaults in this
15: # file which can then be overridden as desired.
16: #
17: # SEE ALSO:
18: # $HOME/.kshrc
19: #
20:
21: # RCSid:
22: # $From: ksh.kshrc,v 1.4 1992/12/05 13:14:48 sjg Exp $
23: #
24: # @(#)Copyright (c) 1991 Simon J. Gerraty
25: #
26: # This file is provided in the hope that it will
27: # be of use. There is absolutely NO WARRANTY.
28: # Permission to copy, redistribute or otherwise
29: # use this file is hereby granted provided that
30: # the above copyright notice and this notice are
31: # left intact.
32:
33: case "$-" in
34: *i*) # we are interactive
35: # we may have su'ed so reset these
36: # NOTE: SCO-UNIX doesn't have whoami,
37: # install whoami.sh
38: USER=`whoami 2>/dev/null`
39: USER=${USER:-`id | sed 's/^[^(]*(\([^)]*\)).*/\1/'`}
40: case $UID in
41: 0) PS1S='# ';;
42: esac
43: PS1S=${PS1S:-'$ '}
44: HOSTNAME=${HOSTNAME:-`uname -n`}
45: HOST=${HOSTNAME%%.*}
46:
47: PROMPT="$USER:!$PS1S"
48: #PROMPT="<$USER@$HOST:!>$PS1S"
49: PPROMPT='$USER:$PWD:!'"$PS1S"
50: #PPROMPT='<$USER@$HOST:$PWD:!>'"$PS1S"
51: PS1=$PPROMPT
52: # $TTY is the tty we logged in on,
53: # $tty is that which we are in now (might by pty)
54: tty=`tty`
55: tty=`basename $tty`
56: TTY=${TTY:-$tty}
1.2 ! kstailey 57: # console is the system console device
! 58: console=`sysctl machdep.console_device | cut -d' ' -f3`
! 59:
1.1 downsj 60: set -o emacs
61:
62: alias ls='ls -CF'
63: alias h='fc -l | more'
64: _cd() { "cd" $*; }
65: # the PD ksh is not 100% compatible
66: case "$KSH_VERSION" in
67: *PD*) # PD ksh
68: case "$TERM" in
69: pc3|pcvt*|xterm*)
70: # bind arrow keys
71: bind '^[['=prefix-2
72: bind '^XA'=up-history
73: bind '^XB'=down-history
74: bind '^XC'=forward-char
75: bind '^XD'=backward-char
76: ;;
77: esac
78: ;;
79: *) # real ksh ?
80: [ -r $HOME/.functions ] && . $HOME/.functions
81: set -o trackall
82: ;;
83: esac
84: case "$TERM" in
85: sun*)
86: # these are not as neat as their csh equivalents
1.2 ! kstailey 87: if [ "$tty" != "$console" ]; then
1.1 downsj 88: # ilabel
89: ILS='\033]L'; ILE='\033\\'
90: # window title bar
91: WLS='\033]l'; WLE='\033\\'
92: fi
93: ;;
94: xterm*)
95: ILS='\033]1;'; ILE='\007'
96: WLS='\033]2;'; WLE='\007'
97: parent="`ps -ax 2>/dev/null | grep $PPID | grep -v grep`"
98: case "$parent" in
99: *telnet*)
100: export TERM=xterms;;
101: esac
102: ;;
103: *) ;;
104: esac
105: # do we want window decorations?
106: if [ "$ILS" ]; then
107: ilabel () { print -n "${ILS}$*${ILE}"; }
108: label () { print -n "${WLS}$*${WLE}"; }
109:
110: alias stripe='label "$USER@$HOST ($tty) - $PWD"'
111: alias istripe='ilabel "$USER@$HOST ($tty)"'
112:
113: wftp () { ilabel "ftp $*"; "ftp" $*; eval istripe; }
114: wcd () { _cd $*; eval stripe; }
115: wtelnet ()
116: {
117: "telnet" "$@"
118: eval istripe
119: eval stripe
120: }
121: wrlogin ()
122: {
123: "rlogin" "$@"
124: eval istripe
125: eval stripe
126: }
127: wsu ()
128: {
129: "su" "$@"
130: eval istripe
131: eval stripe
132: }
133: alias su=wsu
134: alias cd=wcd
135: alias ftp=wftp
136: alias telnet=wtelnet
137: alias rlogin=wrlogin
138: eval stripe
139: eval istripe
140: PS1=$PROMPT
141: fi
142: alias quit=exit
143: alias cls=clear
144: alias logout=exit
145: alias bye=exit
146: alias p='ps -l'
147: alias j=jobs
148: alias o='fg %-'
149: alias ls='ls -gCF'
150:
151: # add your favourite aliases here
152: OS=${OS:-`uname -s`}
153: case $OS in
154: HP-UX)
155: alias ls='ls -CF'
156: ;;
157: *BSD)
158: alias df='df -k'
159: alias du='du -k'
160: ;;
161: esac
162: alias rsize='eval `resize`'
163:
164: case "$TERM" in
165: sun*|xterm*)
166: case $tty in
167: tty[p-w]*)
168: case "$DISPLAY" in
169: "")
170: DISPLAY="`who | grep $TTY | sed -n 's/.*(\([^:)]*\)[:)].*/\1/p' | sed 's/\([a-zA-Z][^.]*\).*/\1/'`:0"
171: ;;
172: esac
173: ;;
174: esac
175: case "$DISPLAY" in
176: ozen*|:*)
177: stty erase "^?"
178: ;;
179: *)
180: stty erase "^h"
181: ;;
182: esac
183: export DISPLAY
184: ;;
185: esac
186:
187: ;;
188: *) # non-interactive
189: ;;
190: esac
191: # commands for both interactive and non-interactive shells
192:
193: # is $1 missing from $2 (or PATH) ?
194: no_path () {
195: eval _v="\$${2:-PATH}"
196: case :$_v: in
197: *:$1:*) return 1;; # no we have it
198: esac
199: return 0
200: }
201: # if $1 exists and is not in path, append it
202: add_path () {
203: [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
204: }
205: # if $1 exists and is not in path, prepend it
206: pre_path () {
207: [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
208: }
209: # if $1 is in path, remove it
210: del_path () {
211: no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
212: sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
213: }