#!/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 WC=/usr/bin/wc CAT=/bin/cat 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 AWK=/usr/bin/awk SED=/usr/bin/sed VI=/usr/bin/vi EXPORTS_INC="LS CP WC CAT HEAD TAIL UNIQ SORT CUT PASTE\ GREP EGREP AWK SED VI" ### function to export a variable defenv () { local key value; key=$1; value=`eval echo \\$$1`; echo "$key=$value; export $key;" >> $CACHE_SH echo "setenv $key $value;" >> $CACHE_CSH } ### function to export aliases defalias () { local IN key value; IFS=' '; alias | while read IN; do IFS='= '; set $IN; IFS=' '; shift; key=$1; shift; value=$*; echo "alias $key=\"$value\";" >> $CACHE_SH echo "alias $key \"$value\";" >> $CACHE_CSH 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" ### 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 .......................................,........... defalias; ### 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 defenv $EXPITEM done }