1# sh/bash/zsh configuration file for Gromacs 2# First we remove old gromacs stuff from the paths 3# by selecting everything else. 4# This is not 100% necessary, but very useful when we 5# repeatedly switch between gmx versions in a shell. 6 7#we make use of IFS, which needs shwordsplit in zsh 8test -n "${ZSH_VERSION+set}" && setopt shwordsplit 9old_IFS="$IFS" 10IFS=":" 11 12replace_in_path() { 13 # Parse PATH-like variable $1, and return a copy of it with any instances of $3 removed and $2 added to the beginning. 14 # If $3 is empty, do not remove anything. 15 local tmppath oldpath to_remove to_add old_shell_opts 16 oldpath="$1" 17 to_add="$2" 18 to_remove="$3" 19 if test -z "${oldpath}"; then 20 echo "${to_add}" 21 else 22 if test "${oldpath}" = ":"; then 23 echo "${to_add}:" 24 else 25 tmppath="${to_add}" 26 old_shell_opts="$-" 27 set -o noglob 28 set -- ${oldpath}"" # Will put tokens to $@, including empty ones 29 # If did not have noglob ("f") enabled before, disable it back 30 if test -n "${old_shell_opts##*f*}"; then 31 set +o noglob 32 fi 33 for i in "$@"; do 34 if test \( -z "${to_remove}" \) -o \( "$i" != "${to_remove}" \); then 35 tmppath="${tmppath}:${i}" 36 fi 37 done 38 echo "${tmppath}" 39 fi 40 fi 41} 42 43# Keep current values to remove later 44OLD_GMXLDLIB="$GMXLDLIB" 45OLD_GMXBIN="$GMXBIN" 46OLD_GMXMAN="$GMXMAN" 47 48########################################################## 49# This is the real configuration part. We save the Gromacs 50# things in separate vars, so we can remove them later. 51# If you move gromacs, change the first line. 52########################################################## 53GMXPREFIX=@CMAKE_INSTALL_PREFIX@ 54GMXBIN=${GMXPREFIX}/@CMAKE_INSTALL_BINDIR@ 55GMXLDLIB=${GMXPREFIX}/@CMAKE_INSTALL_LIBDIR@ 56GMXMAN=${GMXPREFIX}/@CMAKE_INSTALL_MANDIR@ 57GMXDATA=${GMXPREFIX}/@GMX_INSTALL_GMXDATADIR@ 58GMXTOOLCHAINDIR=${GMXPREFIX}/@GMX_INSTALL_CMAKEDIR@ 59GROMACS_DIR=${GMXPREFIX} 60 61@LD_LIBRARY_PATH@=$(replace_in_path "${@LD_LIBRARY_PATH@}" "${GMXLDLIB}" "${OLD_GMXLDLIB}") 62PKG_CONFIG_PATH=$(replace_in_path "${PKG_CONFIG_PATH}" "${GMXLDLIB}/../libdata/pkgconfig" "${OLD_GMXLDLIB}/pkgconfig") 63PATH=$(replace_in_path "${PATH}" "${GMXBIN}" "${OLD_GMXBIN}") 64MANPATH=$(replace_in_path "${MANPATH}" "${GMXMAN}" "${OLD_GMXMAN}") 65 66# export should be separate, so /bin/sh understands it 67export GMXBIN GMXLDLIB GMXMAN GMXDATA @LD_LIBRARY_PATH@ PATH MANPATH 68export PKG_CONFIG_PATH GROMACS_DIR 69 70IFS="$old_IFS" 71unset old_IFS 72 73# read bash completions if understand how to use them 74# and this shell supports extended globbing 75if test -n "${BASH_VERSION+set}" && (complete) > /dev/null 2>&1; then 76 if (shopt -s extglob) > /dev/null 2>&1; then 77 shopt -s extglob 78 if [ -f $GMXBIN/gmx-completion.bash ]; then 79 source $GMXBIN/gmx-completion.bash 80 for cfile in $GMXBIN/gmx-completion-*.bash ; do 81 source $cfile 82 done 83 fi 84 fi 85elif test -n "${ZSH_VERSION+set}" > /dev/null 2>&1 ; then 86 autoload bashcompinit 87 if (bashcompinit) > /dev/null 2>&1; then 88 bashcompinit 89 if [ -f $GMXBIN/gmx-completion.bash ]; then 90 source $GMXBIN/gmx-completion.bash 91 for cfile in $GMXBIN/gmx-completion-*.bash ; do 92 source $cfile 93 done 94 fi 95 fi 96fi 97