mirror of
https://github.com/envmodules/modules.git
synced 2026-06-18 00:06:53 +08:00
Reworked all the init,skel,add.* files to handle versioning or no. Added Makefile.am to ./etc/ and ./ext/ for cleaner installs.
190 lines
4.6 KiB
Bash
Executable File
190 lines
4.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Adds $ETC/*.modules to the $HOME/.login, .cshrc, .profile, .bashrc & .kshenv
|
|
#
|
|
#set -x
|
|
VERSION='$Id: add.modules.in,v 1.2 2002/06/14 06:15:20 rkowen Exp $'
|
|
SKEL=@SKELPATH@
|
|
ETC=@ETCPATH@
|
|
/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
|
|
@VERSIONING@module() { eval \`@BASEPREFIX@/Modules/\$MODULE_VERSION/bin/modulecmd \$modules_shell \$*\`; }
|
|
@NOTVERSIONING@module() { eval \`@bindir@/modulecmd \$modules_shell \$*\`; }
|
|
!
|
|
elif [ x$3 = xcsh ]
|
|
then
|
|
/bin/cat > $1 <<!
|
|
if (\$?tcsh) then
|
|
set modules_shell="tcsh"
|
|
else
|
|
set modules_shell="csh"
|
|
endif
|
|
@VERSIONING@alias module 'eval \`@BASEPREFIX@/\$MODULE_VERSION/bin/modulecmd '\$modules_shell '\!*\`'
|
|
@NOTVERSIONING@alias module 'eval \`@prefix@/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
|