Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
311 lines (289 sloc) 6.85 KB
:
# NAME:
# profile - global initialization for sh,ksh
#
# DESCRIPTION:
# This file is processed during login by /bin/sh
# and /bin/ksh. It is used to setup the default user
# environment.
#
# SEE ALSO:
# $HOME/.profile
# /etc/ksh.kshrc
# RCSid:
# $Id: profile,v 1.4 1992/08/10 12:00:11 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.
sigs="2 3"
trap "" $sigs # don't interrupt us
# simple versions. See ksh.kshrc for the clever ones
add_path () { [ -d $1 ] && eval ${2:-PATH}="\$${2:-PATH}:$1"; }
pre_path () { [ -d $1 ] && eval ${2:-PATH}="$1:\$${2:-PATH}"; }
del_path () { eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`; }
case "$_INIT_" in
*env*) ;;
*) # do these once
_INIT_="$_INIT_"env
export _INIT_
case `echo -n ""` in
-n*)
N=""; C="\c";;
*)
N="-n"; C="";;
esac
if [ -f /unix ]; then
# System V
[ -z "$TZ" -a -f /etc/TIMEZONE ] && . /etc/TIMEZONE
set -- `who -r`
case "$3" in
S|5|0) SINGLE=y;;
*) SINGLE=n;;
esac
else
SINGLE=n # doesn't matter so much
fi
OS=${OS:-`uname -s`}
ARCH=${ARCH:-`uname -m`}
HOSTNAME=`hostname 2>/dev/null`
HOSTNAME=${HOSTNAME:-`uname -n`}
export OS ARCH HOSTNAME
# pick one of the following for the default umask
umask 002 # relaxed -rwxrwxr-x
# umask 022 # cautious -rwxr-xr-x
# umask 027 # uptight -rwxr-x---
# umask 077 # paranoid -rwx------
# you can override the default umask
# for specific groups later...
if [ -d /local ]; then
LOCAL=/local
else
LOCAL=/usr/local
fi
# defaults (might be reset below)
PATH=/bin:/usr/bin
MANPATH=/usr/man
SPOOL=/usr/spool
defterm=vt220
# set system specific things,
# eg. set PATH,MANPATH
# override default ulimit if desired.
# defult ulmit is unlimited on SunOS
# and 4Mb for most System V
case $OS in
SunOS)
# On sun's /bin -> /usr/bin so leave it out!
PATH=/usr/bin:/usr/ucb:/usr/5bin:/usr/etc
SPOOL=/var/spool
LD_LIBRARY_PATH=/usr/lib
add_path /usr/snm/lib LD_LIBRARY_PATH
add_path /usr/X11R5/lib LD_LIBRARY_PATH
add_path /usr/openwin/lib LD_LIBRARY_PATH
export LD_LIBRARY_PATH
;;
SCO-UNIX)
defterm=ansi
;;
B.O.S.)
MANPATH=/usr/catman
SRC_COMPAT=_SYSV
export SRC_COMPAT
;;
NetBSD|386bsd)
MACHINE_ARCH=`uname -m`
MANPATH=/usr/share/man
add_path /usr/X386/man MANPATH
MAILDIR=/var/mail
SPOOL=/var/spool
export MACHINE_ARCH
;;
esac
# add_path only adds them if they exist
add_path /sbin
add_path /usr/sbin
add_path /usr/distbin
add_path /usr/ucb
add_path /usr/lbin
add_path /usr/dbin
add_path /usr/ldbin
add_path ${LOCAL}/bin
add_path /usr/bin/X11
add_path /usr/X11R5/bin
add_path /usr/openwin/bin
# ensure . is at end
PATH=$PATH:.
case "$HOME" in
/) ;;
""|/tmp)
echo "Using /tmp for HOME"
HOME=/tmp; export HOME
;;
*)
pre_path $HOME/bin
;;
esac
add_path /usr/X11R5/man MANPATH
add_path ${LOCAL}/man MANPATH
# make sure these are set at least once
LOGNAME=${LOGNAME:-`logname`}
USER=${USER:-$LOGNAME}
# NOTE: set up $GROUPDIR such that users cannot modify/install
# their own $GROUPDIR/profile
GROUPDIR=`dirname $HOME`
[ "$GROUPDIR" != /etc -a -f $GROUPDIR/profile ] && . $GROUPDIR/profile
export LOCAL TTY PATH LOGNAME USER
if [ -t 1 ]; then
# we are interactive
TTY=`tty`
TTY=`basename $TTY`
if [ -f /etc/organization ]; then
ORGANIZATION="`cat /etc/organization`"
COPYRIGHT="Copyright (c) `date +19%y` $ORGANIZATION"
export ORGANIZATION COPYRIGHT
fi
# set up some env variables
MAIL=${MAILDIR:-$SPOOL/mail}/$USER
MAILPATH=$MAIL:/etc/motd
EMACSDIR=${LOCAL}/lib/emacs
PAGER=${PAGER:-more}
export MAIL EMACSDIR MANPATH MAILPATH PAGER
CVSROOT=${LOCAL}/src/master
EDITOR=vi
VISUAL=vi
FCEDIT=$EDITOR
export CVSROOT FCEDIT EDITOR VISUAL
case $UID in
0) PS1S='# ';;
esac
PS1S=${PS1S:-'$ '}
PROMPT="<$LOGNAME@$HOSTNAME>$PS1S"
[ -f /etc/profile.TeX ] && . /etc/profile.TeX
else
TTY=none
fi
# test (and setup if we are Korn shell)
if [ "$RANDOM" != "$RANDOM" ]; then
# we are Korn shell
SHELL=/bin/ksh
ENV=${HOME%/}/.kshrc
if [ ! -f $ENV ]; then
ENV=/etc/ksh.kshrc
fi
HISTFILE=${HOME%/}/.ksh_hist
PROMPT="<$LOGNAME@$HOSTNAME:!>$PS1S"
export HISTSIZE HISTFILE ENV
CDPATH=.:$HOME
if [ "$TMOUT" ]; then
typeset -r TMOUT
fi
set -o emacs # biased :-)
else
SHELL=/bin/sh
fi
PS1=$PROMPT
export SHELL PS1 EDITOR PATH PROMPT HOSTNAME CDPATH
;;
esac
# login time initialization
case "$_INIT_" in
*log*) ;;
*) _INIT_="$_INIT_"log
case "$SINGLE" in
y) ;;
*)
if [ TTY != none -a "$0" != "-su" -a "$LOGNAME" = "`logname`" ]
then
case $TTY in
tty0*)
echo "`date '+%b %d %H:%M:%S'` $LOGNAME logged in on $TTY" > /dev/console;;
esac
stty sane # usually a good idea :-)
if [ ! -f ~/.hushlogin ]; then
# ensure known state
case $OS in
SunOS|*BSD) ;;
*)
stty isig icanon intr '^c' erase '^h' kill '^u' eof '^d'
mesg y
;;
esac
case $TERM in
network|unknown|dialup|"")
echo ${N} "Enter terminal type [$defterm]: ${C}" 1>&2
read tmpterm
TERM=${tmpterm:-$defterm}
;;
esac
case "$TERM" in
pc3|xterm)
stty erase ^?
;;
esac
# not all of the following are appropriate at all sites
# Sun's don't need to cat /etc/motd for instance
case "$OS" in
SunOS) ;;
SCO-UNIX)
[ -s /etc/motd ] && cat /etc/motd
[ -x /usr/bin/mail -a -s "$MAIL" ] &&
echo "You have mail."
[ -x /usr/bin/news ] && /usr/bin/news -n
;;
NetBSD|386bsd)
# hardware flow control works so use it
case $TTY in
tty0*) # dialups
stty -ixon -ixany
stty crtscts
;;
esac
;;
*)
[ -s /etc/motd ] && cat /etc/motd
if [ -x /usr/bin/mailx ]; then
if mailx -e; then
echo "You have mail."
# show the the headers, this might
# be better done in .profile so they
# can override it.
# mailx -H
fi
fi
[ -x /usr/bin/news ] && /usr/bin/news -n
;;
esac
if [ -f $LOCAL/etc/1stlogin.ann ]; then
[ -f $HOME/... ] || sh $LOCAL/etc/1stlogin.ann
fi
# [ -x /usr/games/fortune ] && /usr/games/fortune -a
# remind folk who turned on reply.pl to turn it off.
if [ -f $HOME/.forward ]; then
echo "Your mail is being forwarded to:"
cat $HOME/.forward
if [ -f $HOME/.recording ]; then
echo "Perhaps you should run \"reply.pl off\""
fi
fi
[ -x /usr/ucb/msgs ] && /usr/ucb/msgs -fq
fi
fi
unset tmpterm defterm C N
esac
case "$TERM" in
network|unknown|"") TERM=$defterm;;
esac
export TERM TTY
;;
esac
# Handle X-terminals if necessary
[ "$SINGLE" = n -a -f /etc/profile.X11 ] && . /etc/profile.X11
# make sure you have this bit last
trap $sigs # restore signals
unset sigs