File: //usr/share/Modules/bin/add.modules
#! /bin/sh
#
# Adds $ETC/*.modules to the $HOME/.login, .cshrc, .profile, .bashrc & .kshenv
#
# etc/add.modules. Generated from add.modules.in by configure.
#
VERSION='$Id: 196cf1d4fbd7d3deecf648e85ee37ead75a60a93 $'
SKEL=/etc/skel
ETC=/etc
/bin/cat <<!
$0
adds a few lines to the beginning of your
$HOME/.cshrc, $HOME/.login,
$HOME/.profile, $HOME/.bashrc, and
possibly your $HOME/.kshenv (or whatever is
specified by the ENV environment variable).
!
if [ -r $HOME/.bash_profile ]; then
/bin/cat <<!
Also your $HOME/.bash_profile will be processed.
!
fi
if [ -r $HOME/.bash_login ]; then
/bin/cat <<!
Also your $HOME/.bash_login will be processed.
!
fi
/bin/cat <<!
The lines are prepended for sourcing the $ETC/csh.modules or
$ETC/profile.modules files or to define the module alias or function.
Why is it necessary?
To insure that you will have access to modules for all subshells,
these lines need to be added to some of your 'dot' files.
Your old .cshrc, .login, .profile, .bashrc and .kshenv will be
renamed to .login.old, .cshrc.old, .profile.old, .bashrc.old and
.kshenv.old respectively. So if you have any problems you will
can easily restore them.
This is version $VERSION .
!
/bin/echo "Continue on (type n for no - default=yes)?\c"
read xxx
if [ x$xxx = xn ]
then
exit 1
fi
# cleanse old dot file $1=file $2=clean temporary $3=file.old
cleandot() {
/bin/cat <<!
Cleaning $1
!
mv $1 $3
sed \
-e "/^[ ]*if[ ]*([ ]*-e[ ].*\/csh\.modules[ ]*)[ ]*then[ ]*\$/,/^[ ]*endif[ ]*\$/d" \
-e "/^[ ]*if[ ]*\[[ ]*-[ef][ ].*\/profile\.modules[ ]*][ ]*\$/,/^[ ]*fi[ ]*\$/d" \
-e "/^[ ]*if[ ]*\[[ ]*-[ef][ ].*\/profile\.modules[ ]*].*then[ ]*\$/,/^[ ]*fi[ ]*\$/d" \
-e "/^[ ]*if[ ]*([ ]*\$?tcsh[ ]*)[ ]*then[ ]*\$/,/^[ ]*alias[ ]*module[ ]*.*\$/d" \
-e "/^[ ]*module().*[ ]*.*}[ ]*\$/d" \
-e "/^[ ]*case[ ]*\"\$0\"[ ]*in[ ]*\$/,/^[ ]*esac[ ]*\$/d" \
-e "/^[ ]*source[ ]*.*\/Modules.*\$/d" \
-e "/^[ ]*source[ ]*.*\/csh\.modules[ ]*/d" \
-e "/^[ ]*\.[ ]*.*\/profile\.modules[ ]*/d" \
$3 > $2
}
# find if certain of the dot files have load lines already
findload() {
grep "^[ ]*module[ ]*load" $1 > /tmp/load.$$
}
# put common stuff derivatives here $1=.dot_file $2=action $3=shell(csh,sh) $4=skel alternative
shdot() {
if [ -f $1 ]
then
/bin/cat <<!
Processing your $1 (your old one is $1.old)
!
if cleandot $1 /tmp/$1.$$ $1.old
then
if [ x$2 = xsource ]
then
/bin/cat <<!
Adding sourcing lines at beginning of $1
!
if [ x$3 = xsh ]
then
findload $1.old
/bin/cat > $1 <<!
if [ -f $ETC/profile.modules ]
then
. $ETC/profile.modules
# put your own module loads here
!
if [ -s /tmp/load.$$ ]
then
/bin/cat /tmp/load.$$ >> $1
else
/bin/cat >> $1 <<!
module load null
!
fi
/bin/cat >> $1 <<!
fi
!
elif [ x$3 = xcsh ]
then
findload $1.old
/bin/cat > $1 <<!
if ( -e $ETC/csh.modules ) then
source $ETC/csh.modules
# put your own module loads here
!
if [ -s /tmp/load.$$ ]
then
/bin/cat /tmp/load.$$ >> $1
else
/bin/cat >> $1 <<!
module load null
!
fi
/bin/cat >> $1 <<!
endif
!
fi
/bin/cat /tmp/$1.$$ >> $1 && /bin/rm /tmp/$1.$$
elif [ x$2 = xalias ]
then
/bin/cat <<!
Adding alias or function lines at beginning of $1
!
if [ x$3 = xsh ]
then
/bin/cat > $1 <<!
case "\$0" in
-sh|sh|*/sh) modules_shell=sh ;;
-ksh|ksh|*/ksh) modules_shell=ksh ;;
-zsh|zsh|*/zsh) modules_shell=zsh ;;
-bash|bash|*/bash) modules_shell=bash ;;
esac
#module() { eval \`/usr/share/Modules/\$MODULE_VERSION/bin/modulecmd \$modules_shell \$*\`; }
module() { eval \`/usr/bin/modulecmd \$modules_shell \$*\`; }
!
elif [ x$3 = xcsh ]
then
/bin/cat > $1 <<!
if (\$?tcsh) then
set modules_shell="tcsh"
else
set modules_shell="csh"
endif
#alias module 'eval \`/usr/share/\$MODULE_VERSION/bin/modulecmd '\$modules_shell '\!*\`'
alias module 'eval \`/usr/share/Modules/bin/modulecmd '\$modules_shell '\!*\`'
!
fi
/bin/cat /tmp/$1.$$ >> $1 && /bin/rm /tmp/$1.$$
fi
else
/bin/echo "Had problems with your $1"
fi
else
/bin/cat <<!
You had no $1 as I see it. Copying $4 for you.
!
/bin/cp $4 $1
fi
/bin/rm /tmp/load.$$ 2> /dev/null
}
# process files in $HOME
cd $HOME
if [ -r .bash_profile ]; then
shdot .bash_profile source sh $SKEL/.profile
fi
if [ -r .bash_login ]; then
shdot .bash_login source sh $SKEL/.profile
fi
shdot .profile source sh $SKEL/.profile
shdot .bashrc alias sh $SKEL/.kshenv
shdot `basename ${ENV:=.kshenv}` alias sh $SKEL/.kshenv
shdot .login source csh $SKEL/.login
shdot .cshrc alias csh $SKEL/.cshrc
exit