/usr/bin/add.modules is in environment-modules 4.1.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | #! /bin/sh
#
# ADD.MODULES, Adds $ETC/*.modules to the $HOME/.login, .cshrc, .profile,
# .bashrc & .kshenv
# Copyright (C) 2000-2017 R.K. Owen
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
##########################################################################
VERSION='$Id: 196cf1d4fbd7d3deecf648e85ee37ead75a60a93 $'
SKEL=/etc/skel
ETC=/skel
/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/bin/tclsh /usr/lib/x86_64-linux-gnu/modulecmd.tcl \$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/bin/tclsh /usr/lib/x86_64-linux-gnu/modulecmd.tcl '\$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
|