#!/bin/sh # # $HOME/.sh/.setenv.inc - common definitions for .setenv # # written by Hiroki Sato # $Id$ ### set basic path PATH=/bin:/usr/bin ### fundamental tools in Unix-like OS ### NOTE: The functions may use variables like $LS ### instead of /bin/ls. LS=/bin/ls CP=/bin/cp CAT=/bin/cat PS=/bin/ps WC=/usr/bin/wc HEAD=/usr/bin/head TAIL=/usr/bin/tail UNIQ=/usr/bin/uniq SORT=/usr/bin/sort CUT=/usr/bin/cut PASTE=/usr/bin/paste GREP=/usr/bin/grep EGREP=/usr/bin/egrep BASENAME=/usr/bin/basename HOSTNAME_BIN=/bin/hostname AWK=/usr/bin/awk SED=/usr/bin/sed VI=/usr/bin/vi ### set OS type OSTYPE=`uname` OSVERSION=`uname -r | $CUT -d. -f1` if [ "$OSTYPE" = SunOS ]; then if [ $OSVERSION -ge 5 ]; then OSTYPE=Solaris OSVERSION=`expr $OSVERSION - 3` else OSTYPE=SunOS4 fi fi HNAME=`$HOSTNAME_BIN | $CUT -d. -f1` EXPORTS_INC="LS CP PS WC CAT HEAD TAIL UNIQ SORT CUT PASTE\ BASENAME GREP EGREP AWK SED VI OSTYPE OSVERSION HNAME" ### function to export a variable print_env () { local key value; key=$1; value=`eval echo \\$$1`; if [ ! -z "$OPT" -a "$OPT" = "c" ]; then echo "setenv $key \"$value\";" >> $CACHE else echo "$key=\"$value\"; export $key;" >> $CACHE fi } ### function to export aliases print_alias () { local IN key value; IFS=' '; alias | while read IN; do IFS='= '; set $IN; IFS=' '; shift; key=$1; shift; value=$*; if [ ! -z "$OPT" -a "$OPT" = "c" ]; then echo "alias $key \"$value\";" >> $CACHE else echo "alias $key=\"$value\";" >> $CACHE fi done } ### check VAR multiplicity ### ### usage: chkmulti PATH PATH_Z ### return: values which $PATH and $PATH_Z contain ### without duplication. $PATH is always preserved ### and appears first. chkmulti () { local DUBBLET P1 P2; P1=`eval echo \\$$1`; P2=`eval echo \\$$2`; DOUBLLET=`echo $P1 $P2 | $SED 'y/ :/\n\n/' | $SORT | $UNIQ -d | $PASTE -s -d '|' -`; echo `echo $P2 | $GREP -v \($DOUBLLET\)`; } ### check for existence of the directory ### ### usage: chkdir $DIRLIST ### return: a list which contains real directories ### in $DIRLIST chkdir () { local value; IFS=': '; set $*; IFS=' '; ### check for existence of the directory for i in $* do if [ -d $i ]; then value=${value#:}:$i fi done echo $value; } ### create cache file ### ### usage: create_cache ### return: store variables into $CACHE_SH and $CACHE_CSH ### create_cache () { ### include arch-depend variables . $HOME/.sh/.archdepend ### include host-depend variables . $HOME/.sh/.hostdepend ### include aliases . $HOME/.sh/.aliases ### system related variables TMPDIR=/tmp MAIL=/var/mail/$USER ### list of export variables ......................................... EXPORTS="$EXPORTS $EXPORTS_INC\ PATH MANPATH LD_LIBRARY_PATH\ $EXPORTS_ARCH $EXPORTS_HOST $EXPORTS_MINE" ### PATH (assume that $PREFIX,$XBASE,$HOME is exist) PATH_A="/sbin /usr/sbin\ $PREFIX/bin $PREFIX/libexec\ $XBASE/bin\ $PATH_ARCH\ $PATH_HOST\ $HOME/bin $HOME/local/bin" ### MANPATH and LD_LIBRARY_PATH (assume that $PREFIX,$XBASE,$HOME is exist) MAN_PATH="/usr/share/man $PREFIX/man $XBASE/man\ $MAN_PATH_ARCH $MAN_PATH_HOST\ $HOME/local/man" LD_PATH="$PREFIX/lib\ $LD_PATH_ARCH $MAN_PATH_HOST\ $HOME/local/lib" ### export aliases .......................................,........... print_alias; ### export routine ................................................... for EXPITEM in $EXPORTS do case $EXPITEM in PATH) IFS=': '; set $PATH_A; IFS=' '; PATH_Z=$*; PATHLIST=`chkmulti PATH PATH_Z` PATH=`chkdir $PATH $PATHLIST` ;; MANPATH) MANPATH=`chkdir $MAN_PATH` ;; LD_LIBRARY_PATH) LD_LIBRARY_PATH=`chkdir $LD_PATH` ;; esac print_env $EXPITEM done }