summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/Makefile4
-rw-r--r--etc/ksh.kshrc211
2 files changed, 213 insertions, 2 deletions
diff --git a/etc/Makefile b/etc/Makefile
index 40d3c2264e8..6882a79bae0 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.21 1996/08/10 12:30:27 deraadt Exp $
+# $OpenBSD: Makefile,v 1.22 1996/08/14 08:28:03 downsj Exp $
TZDIR= /usr/share/zoneinfo
LOCALTIME= US/Pacific
@@ -15,7 +15,7 @@ BINOWN= root
BINGRP= wheel
BIN1= aliases bootptab changelist csh.cshrc csh.login csh.logout daily \
dm.conf ftpusers ftpchroot gettytab group hosts hosts.equiv hosts.lpd \
- ifaliases inetd.conf man.conf monthly motd myname netstart \
+ ifaliases inetd.conf ksh.kshrc man.conf monthly motd myname netstart \
newsyslog.conf phones printcap protocols rc rc.local remote rpc \
security services shells syslog.conf weekly \
etc.${MACHINE}/disktab
diff --git a/etc/ksh.kshrc b/etc/ksh.kshrc
new file mode 100644
index 00000000000..59a1714e78c
--- /dev/null
+++ b/etc/ksh.kshrc
@@ -0,0 +1,211 @@
+:
+# $OpenBSD: ksh.kshrc,v 1.1 1996/08/14 08:28:04 downsj Exp $
+#
+# NAME:
+# ksh.kshrc - global initialization for ksh
+#
+# DESCRIPTION:
+# Each invocation of /bin/ksh processes the file pointed
+# to by $ENV (usually $HOME/.kshrc).
+# This file is intended as a global .kshrc file for the
+# Korn shell. A user's $HOME/.kshrc file simply requires
+# the line:
+# . /etc/ksh.kshrc
+# at or near the start to pick up the defaults in this
+# file which can then be overridden as desired.
+#
+# SEE ALSO:
+# $HOME/.kshrc
+#
+
+# RCSid:
+# $From: ksh.kshrc,v 1.4 1992/12/05 13:14:48 sjg Exp $
+#
+# @(#)Copyright (c) 1991 Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+
+case "$-" in
+*i*) # we are interactive
+ # we may have su'ed so reset these
+ # NOTE: SCO-UNIX doesn't have whoami,
+ # install whoami.sh
+ USER=`whoami 2>/dev/null`
+ USER=${USER:-`id | sed 's/^[^(]*(\([^)]*\)).*/\1/'`}
+ case $UID in
+ 0) PS1S='# ';;
+ esac
+ PS1S=${PS1S:-'$ '}
+ HOSTNAME=${HOSTNAME:-`uname -n`}
+ HOST=${HOSTNAME%%.*}
+
+ PROMPT="$USER:!$PS1S"
+ #PROMPT="<$USER@$HOST:!>$PS1S"
+ PPROMPT='$USER:$PWD:!'"$PS1S"
+ #PPROMPT='<$USER@$HOST:$PWD:!>'"$PS1S"
+ PS1=$PPROMPT
+ # $TTY is the tty we logged in on,
+ # $tty is that which we are in now (might by pty)
+ tty=`tty`
+ tty=`basename $tty`
+ TTY=${TTY:-$tty}
+
+ set -o emacs
+
+ alias ls='ls -CF'
+ alias h='fc -l | more'
+ _cd() { "cd" $*; }
+ # the PD ksh is not 100% compatible
+ case "$KSH_VERSION" in
+ *PD*) # PD ksh
+ case "$TERM" in
+ pc3|pcvt*|xterm*)
+ # bind arrow keys
+ bind '^[['=prefix-2
+ bind '^XA'=up-history
+ bind '^XB'=down-history
+ bind '^XC'=forward-char
+ bind '^XD'=backward-char
+ ;;
+ esac
+ ;;
+ *) # real ksh ?
+ [ -r $HOME/.functions ] && . $HOME/.functions
+ set -o trackall
+ ;;
+ esac
+ case "$TERM" in
+ sun*)
+ # these are not as neat as their csh equivalents
+ if [ "$tty" != console ]; then
+ # ilabel
+ ILS='\033]L'; ILE='\033\\'
+ # window title bar
+ WLS='\033]l'; WLE='\033\\'
+ fi
+ ;;
+ xterm*)
+ ILS='\033]1;'; ILE='\007'
+ WLS='\033]2;'; WLE='\007'
+ parent="`ps -ax 2>/dev/null | grep $PPID | grep -v grep`"
+ case "$parent" in
+ *telnet*)
+ export TERM=xterms;;
+ esac
+ ;;
+ *) ;;
+ esac
+ # do we want window decorations?
+ if [ "$ILS" ]; then
+ ilabel () { print -n "${ILS}$*${ILE}"; }
+ label () { print -n "${WLS}$*${WLE}"; }
+
+ alias stripe='label "$USER@$HOST ($tty) - $PWD"'
+ alias istripe='ilabel "$USER@$HOST ($tty)"'
+
+ wftp () { ilabel "ftp $*"; "ftp" $*; eval istripe; }
+ wcd () { _cd $*; eval stripe; }
+ wtelnet ()
+ {
+ "telnet" "$@"
+ eval istripe
+ eval stripe
+ }
+ wrlogin ()
+ {
+ "rlogin" "$@"
+ eval istripe
+ eval stripe
+ }
+ wsu ()
+ {
+ "su" "$@"
+ eval istripe
+ eval stripe
+ }
+ alias su=wsu
+ alias cd=wcd
+ alias ftp=wftp
+ alias telnet=wtelnet
+ alias rlogin=wrlogin
+ eval stripe
+ eval istripe
+ PS1=$PROMPT
+ fi
+ alias quit=exit
+ alias cls=clear
+ alias logout=exit
+ alias bye=exit
+ alias p='ps -l'
+ alias j=jobs
+ alias o='fg %-'
+ alias ls='ls -gCF'
+
+# add your favourite aliases here
+ OS=${OS:-`uname -s`}
+ case $OS in
+ HP-UX)
+ alias ls='ls -CF'
+ ;;
+ *BSD)
+ alias df='df -k'
+ alias du='du -k'
+ ;;
+ esac
+ alias rsize='eval `resize`'
+
+ case "$TERM" in
+ sun*|xterm*)
+ case $tty in
+ tty[p-w]*)
+ case "$DISPLAY" in
+ "")
+ DISPLAY="`who | grep $TTY | sed -n 's/.*(\([^:)]*\)[:)].*/\1/p' | sed 's/\([a-zA-Z][^.]*\).*/\1/'`:0"
+ ;;
+ esac
+ ;;
+ esac
+ case "$DISPLAY" in
+ ozen*|:*)
+ stty erase "^?"
+ ;;
+ *)
+ stty erase "^h"
+ ;;
+ esac
+ export DISPLAY
+ ;;
+ esac
+
+;;
+*) # non-interactive
+;;
+esac
+# commands for both interactive and non-interactive shells
+
+# is $1 missing from $2 (or PATH) ?
+no_path () {
+ eval _v="\$${2:-PATH}"
+ case :$_v: in
+ *:$1:*) return 1;; # no we have it
+ esac
+ return 0
+}
+# if $1 exists and is not in path, append it
+add_path () {
+ [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
+}
+# if $1 exists and is not in path, prepend it
+pre_path () {
+ [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
+}
+# if $1 is in path, remove it
+del_path () {
+ no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
+ sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
+}