diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in index 2b9cef5..f6f49c9 100755 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -864,10 +864,30 @@ subcommand_unload() { # another module. # For the time being the modules requiring this module will be # unloaded too. + local opts=() + pmodules::get_options opts -- '' "$@" || subcommand_help_${subcommand} + eval set -- "${opts[@]}" + local args=() while (( $# > 0 )); do - subcommand_generic1 unload "$1" + case $1 in + -- ) + ;; + * ) + args+=( "$1" ) + ;; + esac shift done + if (( ${#args[@]} == 0 )); then + std::die 3 "%s %s: missing argument\n" \ + "${CMD}" 'unload' + fi + + for arg in "${args[@]}"; do + local output=$("${modulecmd}" "${g_shell}" "${subcommand}" "${arg}") + echo "${output}" + eval "${output}" + done } #