diff --git a/Pmodules/libstd.bash b/Pmodules/libstd.bash index f56ae57d83b431fe5e9c91372e3fd8678bf530b2..51619157b894e68f5134b0a62e44a29f34db31dd 100644 --- a/Pmodules/libstd.bash +++ b/Pmodules/libstd.bash @@ -35,6 +35,17 @@ std::die() { exit $ec } +std::def_cmds(){ + local path="$1" + shift + for cmd in "$@"; do + eval declare -g ${cmd}=$(PATH="${path}" which $cmd 2>/dev/null) + if [[ -z "${!cmd}" ]]; then + std::die 255 "${cmd} not found" + fi + done +} + # # get answer to yes/no question # diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in index 1644675f09b068f77e15497667acfc251152a9af..ccde9f6191c0217b886afdb7dfa1dc3ea1b24113 100644 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -13,30 +13,14 @@ declare prefix=$(dirname "${mydir}") declare -r libdir="${prefix}/lib" declare -r libexecdir="${prefix}/libexec" -base64=$(PATH=/bin:/usr/bin /usr/bin/which base64) -declare -r base64 -mktemp=$(PATH=/bin:/usr/bin /usr/bin/which mktemp) -declare -r mktemp -sort=$(PATH=/bin:/usr/bin /usr/bin/which sort) -declare -r sort -awk=$(PATH=/bin:/usr/bin /usr/bin/which awk) -declare -r awk -rm=$(PATH=/bin:/usr/bin /usr/bin/which rm) -declare -r rm -logger=$(PATH=/bin:/usr/bin /usr/bin/which logger) -declare -r logger - -if [[ $(uname -s) == 'Darwin' ]]; then - declare -r getopt="${libexecdir}/getopt" - declare -r find="${libexecdir}/find" -else - getopt=$(PATH=/bin:/usr/bin /usr/bin/which getopt) - declare -r getopt - find=$(PATH=/bin:/usr/bin /usr/bin/which find) - declare -r find -fi - source "${libdir}/libstd.bash" +source "${libdir}/libpmodules.bash" + +path="/bin:/usr/bin" +[[ $(uname -s) == 'Darwin' ]] && path+=":${libexecdir}" +std::def_cmds "${path}" \ + 'awk' 'base64' 'find' 'getopt' 'logger' 'mktemp' \ + 'rm' 'sort' 'find' if [[ ${PMODULES_PURETCL} == yes ]]; then declare -r modulecmd="${libexecdir}/modulecmd.tcl"