diff --git a/modulecmd.tcl.in b/modulecmd.tcl.in index b3f2013d..cc95f42b 100644 --- a/modulecmd.tcl.in +++ b/modulecmd.tcl.in @@ -1678,17 +1678,19 @@ proc getenv {var} { reportDebug "getenv: ($var) mode = $mode" - if {$mode eq "load" || $mode eq "unload"} { + if {$mode ne "display"} { if {[info exists ::env($var)]} { - return $::env($var) + set val $::env($var) } else { - return "_UNDEFINED_" + set val "_UNDEFINED_" } - }\ - elseif {$mode eq "display" && !$::g_inhibit_dispreport} { - return "\$$var" + } elseif {!$::g_inhibit_dispreport} { + set val "\$$var" + } else { + set val {} } - return {} + + return $val } proc unsetenv {var {val {}}} { diff --git a/testsuite/modulefiles/getenv/0.6 b/testsuite/modulefiles/getenv/0.6 new file mode 100644 index 00000000..c1eb771b --- /dev/null +++ b/testsuite/modulefiles/getenv/0.6 @@ -0,0 +1,30 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: getenv/%M% +# Revision: %I% +# First Edition: 2018/04/15 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite modulefile +# Command: +# Sub-Command: getenv, setenv +# +# Invocation: load, unload, display, help, test +# Result: %R{ +# }R% +# Comment: %C{ +# Check the effect of 'getenv' command on value transmission to +# variable through the different modulefile evaluation mode +# }C% +# +############################################################################## + +setenv TS2 [getenv TS1] +setenv TS3 $env(TS2) +unsetenv TS4 [getenv TS1] diff --git a/testsuite/modules.50-cmds/269-getenv-env.exp b/testsuite/modules.50-cmds/269-getenv-env.exp new file mode 100644 index 00000000..1f8a91ed --- /dev/null +++ b/testsuite/modules.50-cmds/269-getenv-env.exp @@ -0,0 +1,181 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2018/04/15 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite testsequence +# Command: load, unload, display, help, test +# Modulefiles: getenv/0.6 +# Sub-Command: +# +# Comment: %C{ +# Check the effect of 'getenv' command on value transmission to +# variable through the different modulefile evaluation mode +# }C% +# +############################################################################## + +set module "getenv/0.6" +set modulefile "$modpath/$module" +set modulefilere "$modpathre/$module" + +# +# test load mode +# + +set ans [list] +lappend ans [list set TS2 "_UNDEFINED_"] +lappend ans [list set TS3 "_UNDEFINED_"] +lappend ans [list unset TS4] +lappend ans [list setpath LOADEDMODULES $module] +lappend ans [list setpath _LMFILES_ $modulefile] +testouterr_cmd "sh" "load $module" $ans "" + +# test with value set to variable prior to load +setenv_var TS1 "no" +set ans [list] +lappend ans [list set TS2 "no"] +lappend ans [list set TS3 "no"] +lappend ans [list unset TS4] +lappend ans [list setpath LOADEDMODULES $module] +lappend ans [list setpath _LMFILES_ $modulefile] +testouterr_cmd "sh" "load $module" $ans "" + + +# +# test unload mode +# + +# test with module loaded +setenv_var TS1 "yes" +setenv_var TS2 "yes" +setenv_var TS3 "yes" +setenv_loaded_module $module $modulefile + +set ans [list] +lappend ans [list unset TS2] +lappend ans [list unset TS3] +lappend ans [list set TS4 "yes"] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +testouterr_cmd "sh" "unload $module" $ans "" + +# test with module loaded but vanished env vars +unsetenv_var TS1 +unsetenv_var TS2 +unsetenv_var TS3 + +set ans [list] +lappend ans [list unset TS2] +lappend ans [list unset TS3] +lappend ans [list set TS4 "_UNDEFINED_"] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +testouterr_cmd "sh" "unload $module" $ans "" + + +# restore environment +unsetenv_loaded_module + + +# +# test display mode +# + +# test without module loaded +set tserr "$modlin +$modulefilere: + +setenv\t\tTS2\t\\\$TS1 +setenv\t\tTS3\t\\\$TS1 +unsetenv\tTS4\t\\\$TS1 +$modlin" +testouterr_cmd_re "sh" "display $module" "" $tserr + +# test with module loaded +setenv_var TS1 "yes" +setenv_var TS2 "yes" +setenv_var TS3 "yes" +setenv_loaded_module $module $modulefile + +testouterr_cmd_re "sh" "display $module" "" $tserr + +# restore environment +unsetenv_var TS1 +unsetenv_var TS2 +unsetenv_var TS3 +unsetenv_loaded_module + + +# +# test help mode +# + +set tserr "$modlin +Module Specific Help for $modulefilere: + +$warn_msgs: Unable to find ModulesHelp in $modulefilere. +$modlin" + +# test without module loaded +testouterr_cmd_re "sh" "help $module" "" $tserr + +# test with module loaded +setenv_var TS1 "yes" +setenv_var TS2 "yes" +setenv_var TS3 "yes" +setenv_loaded_module $module $modulefile + +testouterr_cmd_re "sh" "help $module" "" $tserr + +# restore environment +unsetenv_var TS1 +unsetenv_var TS2 +unsetenv_var TS3 +unsetenv_loaded_module + + +# +# test test mode +# + +set tserr "$modlin +Module Specific Test for $modulefilere: + +$warn_msgs: Unable to find ModulesTest in $modulefilere. +$modlin" + +# test without module loaded +testouterr_cmd_re "sh" "test $module" "" $tserr + +# test with module previously loaded +setenv_var TS1 "yes" +setenv_var TS2 "yes" +setenv_var TS3 "yes" +setenv_loaded_module $module $modulefile + +testouterr_cmd_re "sh" "test $module" "" $tserr + +# restore environment +unsetenv_var TS1 +unsetenv_var TS2 +unsetenv_var TS3 +unsetenv_loaded_module + + +# +# Cleanup +# + +unset tserr +unset ans + +unset modulefilere +unset modulefile +unset module diff --git a/testsuite/modules.50-cmds/350-allin.exp b/testsuite/modules.50-cmds/350-allin.exp index 10619d7e..36b5966e 100644 --- a/testsuite/modules.50-cmds/350-allin.exp +++ b/testsuite/modules.50-cmds/350-allin.exp @@ -317,7 +317,7 @@ $modlin [test_stderr_content $modulepathre/$module/5 {} 1]" testouterr_cmd_re "sh" "help $module/1" "OK" [help_stderr_content "$modulepathre/$module/1" $tserr1 1] -set tserr "0001Tclhelphelp$module/2$module/2shsh$module$u_sysnamere$u_nodenamere$u_domainre$u_releasere$u_versionre$u_machinere" +set tserr "_UNDEFINED_0001Tclhelphelp$module/2$module/2shsh$module$u_sysnamere$u_nodenamere$u_domainre$u_releasere$u_versionre$u_machinere" testouterr_cmd_re "sh" "help $module/2" "OK" [help_stderr_content "$modulepathre/$module/2" "$tserr" 0] testouterr_cmd_re "sh" "help $module/3" "ERR" [help_stderr_content "$modulepathre/$module/3" "$whatis\n\n$whatis" 0] testouterr_cmd_re "sh" "help $module/4" $ans [help_stderr_content "$modulepathre/$module/4" "" 0] @@ -328,7 +328,7 @@ testouterr_cmd_re "sh" "help $module/4" $ans [help_stderr_content "$modulepathre # testouterr_cmd_re "sh" "test $module/1" "OK" [test_stderr_content "$modulepathre/$module/1" $tserr1 1] -set tserr "0001Tcltesttest$module/2$module/2shsh$module$u_sysnamere$u_nodenamere$u_domainre$u_releasere$u_versionre$u_machinere" +set tserr "_UNDEFINED_0001Tcltesttest$module/2$module/2shsh$module$u_sysnamere$u_nodenamere$u_domainre$u_releasere$u_versionre$u_machinere" testouterr_cmd_re "sh" "test $module/2" "OK" [test_stderr_content "$modulepathre/$module/2" "$tserr" 0] testouterr_cmd_re "sh" "test $module/3" "ERR" [test_stderr_content "$modulepathre/$module/3" "$whatis\n\n$whatis" 0] testouterr_cmd_re "sh" "test $module/4" $ans [test_stderr_content "$modulepathre/$module/4" "" 0] diff --git a/testsuite/modules.90-avail/070-full.exp b/testsuite/modules.90-avail/070-full.exp index 80f647fc..4bd1be8a 100644 --- a/testsuite/modules.90-avail/070-full.exp +++ b/testsuite/modules.90-avail/070-full.exp @@ -41,90 +41,91 @@ set len [string length $modpath] set lrep [expr {($test_cols - $len - 2)/2}] set rrep [expr {$test_cols - $len - 2 - $lrep}] set ts_sh "[string repeat {-} $lrep] $modpath [string repeat {-} $rrep] -alias/1.0 info/specified(foo) loc_sym/alias2 modbad/is-used spread/4.0 -alias/2.0 info/type loc_sym/alias3 modbad/path spread/5.0 -append/0.1 info/user loc_sym/alias4 modbad/paths spread/6.0 -append/0.2 info/userexp loc_sym/alias5 modbad/prepend-path spread/7.0 -append/0.3 inforc/1.0 loc_sym/alias6 modbad/remove-path spread/8.0 -append/0.4 inforc/2.0(avail:bar:default) loc_sym/alias7 module/2.0 spreadrc/dir1/1.0 -append/0.5 inforc/foo(@) loc_sym/alias8 module/bad spreadrc/dir2/1.0 -append/1.0 load/00 loc_sym/alias9 module/empty spreadrc/dir3/1.0 -append/1.1 load/10 loc_sym/alias10 module/err spreadrc/dir4/1.0 -append/1.3 load/11 loc_sym/alias11 module/lbad spreadrc/dir5/1.0 -append/1.4 load/12 loc_sym/exec1 module/lerr spreadrc/dir6/1.0 -append/1.5 load/13 loc_sym/exec2 module/lunk spreadrc/dir7/1.0 -append/1.6 load/14 loc_sym/exec3 module/meta spreadrc/dir8/1.0 -append/1.7 load/15 loc_sym/getvers1 module/relpath symlink/0.9 -append/2.0 load/16 loc_sym/getvers2 module/unk symlink/1(@) -append/2.1 load/17 loc_sym/getvers3 modvar/modfile symlink/1.2(default:new) -append/2.2 load/18 loc_sym/getvers4 modvar/submodfile symlink/bar(@) -append/2.3 load/19 loc_sym/getvers5 prepend/0.1 symlink2/1.0 -append/2.4 load/20 loc_sym/getvers6 prepend/0.2 symlink2/2.0 -append/4.0 load/21 loc_sym/getvers7 prepend/0.3 system/1.0 -append/4.1 load/22 loc_sym/getvers8 prepend/0.4 system/2.0 -append/5.0 load/23 loc_sym/getvers9 prepend/0.5 test/1.0 -append/6.0 load/24 loc_sym/getvers10 prepend/1.0 test/1.2 -append/7.0 load/25 loc_sym/versinf1 prepend/1.1 test/2.0 -averssort/1(@) load/26 loc_sym/versinf2 prepend/1.3 tr2_loc(trreg) -averssort/1.2.4(@) load/27 loc_sym/versinf3 prepend/1.4 tr2_loc/al1(tr2unstable:@) -averssort/1.10(@) load/28 loc_sym/versinf4 prepend/1.5 tr2_loc/al2(tr2bar:@) -bad/after(good) load/29 loc_sym/versinf5 prepend/1.6 tr2_loc/al3(default:tr2exp:trreg:@) -bad/before load/30 loc_sym/versinf6 prepend/1.7 tr2_loc/al4(@) -bad2/body load/all(default) loc_sym/versinf7 prepend/1.8 tr2_loc/al5(default:trreg:@) -bad2/proc loc_def/default loc_sym/version1 prepend/1.9 tr_loc/al1(tr2unstable:trunstable:@) -break/1.0 loc_def/truedef loc_sym/version2 prepend/2.0 tr_loc/al2(default:tr2bar:tr2exp:trbar:trreg:@) -break/2.0 loc_dv1/1.0 loc_sym/version3 prepend/2.1 tr_loc/al3(trexp:@) -break/3.0 loc_dv1/2.0 loc_sym/version4 prepend/2.2 tr_loc/al4(@) -break/4.0 loc_dv2/1.0(default) loc_sym/version5 prepend/2.3 tr_loc/al5(@) -break/5.0 loc_dv2/2.0 loc_sym/version6 prepend/2.4 trace/all_off -break/6.0 loc_dv3/1.0 loc_sym/version7 prepend/3.0 trace/all_on -chdir/1.0 loc_dv3/2.0 loc_sym/version8 prepend/3.1 uname/cache -chdir/2.0 loc_dv4/1.0 loc_sym/version9 prepend/4.0 uname/domain -chdir/3.0 loc_dv6/1.0 loc_sym/version10 prereq/full uname/machine -chdir/4.0 loc_dv6/2.0/1.0 loc_sym/version11 prereq/fullpath uname/nodename -coll/a loc_dv7/1.0 loc_sym/version12 prereq/module uname/release -coll/b loc_dv7/2.0(default) loc_sym/version13 prereq/orlist uname/sysname -coll/c loc_dv7/2.0/1.0 loc_sym/version14 prereq/relpath uname/unk -coll/d loc_dv7/3.0 loc_sym/version15 puts/1 uname/version -conflict/full loc_dv8/1.0 loc_sym/version16 puts/2 unsetenv/0.6 -conflict/fullpath loc_dv8/2.0 loc_sym/version17 puts/3 unsetenv/0.8 -conflict/module loc_dv9/1.0(default) loc_sym/version18 puts/4 unsetenv/0.9 -conflict/relpath loc_dv9/2.0 loc_sym/version19 puts/5 unsetenv/1.0 -continue/1.0 loc_dvv1/1.0(default) loc_sym/version20 puts/6 use/1.0(default) -continue/2.0 loc_dvv1/2.0 loc_sym/version21 puts/7 use/2.0 -continue/3.0 loc_fq/1.0 loc_sym/version22 puts/8 use/2.1 -continue/4.0 loc_rc1/1.0(foo) loc_sym/version23 recurs/modA use/2.2 -continue/5.0 loc_rc1/2.0 loc_sym/version24 recurs/modB use/3.0 -continue/6.0 loc_rc2/1.0(bar:blah:foo) loc_sym/version25 remove/0.3 use/3.1 -dirmodalias(@) loc_rc2/2.0 loc_sym/version26 remove/0.4 use/3.2 -dirmodalias/1.0 loc_rc3/1.0(default) loc_tr(reg) remove/0.5 use/4.0 -dirmodvirt loc_rc3/2.0(cur:stable) loc_tr/1.0(cur:stable) remove/1.0 use/4.1 -dirmodvirt/1.0 loc_rc3/3.0(chk:exp:new:test) loc_tr/2.0(next:tr2unstable:trunstable:unstable) remove/1.3 user/adv -empty/1.0 loc_rc4/1.0 loc_tr/3.0(bar:default:exp:foo:reg:tr2bar:tr2exp:trbar:trexp:trreg) remove/1.4 user/advanced -eschars/1.0 loc_rc4/2.0(default) loc_tr/al1(unstable:@) remove/1.5 user/exp -exit/1.0 loc_rc4/3.0 loc_tr/al2(bar:default:exp:reg:trexp:@) remove/1.6 user/expert -exit/2.0 loc_rc5/1.0 loc_tr/al3(default:exp:reg:@) remove/1.7 user/nov -exit/3.0 loc_rc5/2.0 loc_tr/al4(default:reg:@) remove/2.0 user/novice -exit/4.0 loc_rc6/0.9 loc_virt1/1.0 remove/2.3 user/undef -getenv/1.0 loc_rc6/1(@) loc_virt1/2.0 remove/2.4 verbose/msg -help/2.0 loc_rc6/1.2(default:new) loc_virt1/3.0 remove/3.0 verbose/off -info/command loc_rc6/bar(@) loc_virt1/4.0 remove/3.1 verbose/on -info/commandexp loc_rc7/0.9 loc_virt2/1.0 remove/4.0 verbose/undef -info/isavail loc_rc7/1(@) loc_virt2/2.0 remove/4.1 versions/1.1 -info/isloaded loc_rc7/1.2 log/badfac remove/4.2 versions/1.2 -info/issaved loc_rc7/bar(@) log/err_both_1 remove/5.0 versions/1.3 -info/isused loc_rc8/0.9(@) log/err_both_2 setenv/0.6 verssort/1 -info/loaded loc_rc8/1.0 log/err_file setenv/0.7.1 verssort/1.2.1 -info/mode1 loc_rcv1/1(@) log/err_syslog setenv/0.7.2 verssort/1.2.4 -info/mode2 loc_rcv1/1.1 modbad/append-path setenv/0.8 verssort/1.8-2015-12-01 -info/mode3 loc_rcv1/1.2(default:new) modbad/autoinit setenv/1.0 verssort/1.8-2016-02-01 -info/mode4 loc_rcv1/2.0 modbad/empty source/0.9 verssort/1.10 -info/mode5 loc_rcv1/bar(@) modbad/foo source/1.0 whatis/lines -info/mode6 loc_rcv2/1.2 modbad/help source/1.1 whatis/multiple -info/name loc_rcv2/1.5 modbad/info-loaded source/1.2 whatis/none -info/others loc_rcv2/2.0 modbad/is-avail spread/1.0 whatis/single -info/shells loc_sym/1.0 modbad/is-loaded spread/2.0 whatis/string -info/shellsexp loc_sym/alias1 modbad/is-saved spread/3.0 x-resource/1 " +alias/1.0 info/specified(foo) loc_sym/alias3 modbad/paths spread/7.0 +alias/2.0 info/type loc_sym/alias4 modbad/prepend-path spread/8.0 +append/0.1 info/user loc_sym/alias5 modbad/remove-path spreadrc/dir1/1.0 +append/0.2 info/userexp loc_sym/alias6 module/2.0 spreadrc/dir2/1.0 +append/0.3 inforc/1.0 loc_sym/alias7 module/bad spreadrc/dir3/1.0 +append/0.4 inforc/2.0(avail:bar:default) loc_sym/alias8 module/empty spreadrc/dir4/1.0 +append/0.5 inforc/foo(@) loc_sym/alias9 module/err spreadrc/dir5/1.0 +append/1.0 load/00 loc_sym/alias10 module/lbad spreadrc/dir6/1.0 +append/1.1 load/10 loc_sym/alias11 module/lerr spreadrc/dir7/1.0 +append/1.3 load/11 loc_sym/exec1 module/lunk spreadrc/dir8/1.0 +append/1.4 load/12 loc_sym/exec2 module/meta symlink/0.9 +append/1.5 load/13 loc_sym/exec3 module/relpath symlink/1(@) +append/1.6 load/14 loc_sym/getvers1 module/unk symlink/1.2(default:new) +append/1.7 load/15 loc_sym/getvers2 modvar/modfile symlink/bar(@) +append/2.0 load/16 loc_sym/getvers3 modvar/submodfile symlink2/1.0 +append/2.1 load/17 loc_sym/getvers4 prepend/0.1 symlink2/2.0 +append/2.2 load/18 loc_sym/getvers5 prepend/0.2 system/1.0 +append/2.3 load/19 loc_sym/getvers6 prepend/0.3 system/2.0 +append/2.4 load/20 loc_sym/getvers7 prepend/0.4 test/1.0 +append/4.0 load/21 loc_sym/getvers8 prepend/0.5 test/1.2 +append/4.1 load/22 loc_sym/getvers9 prepend/1.0 test/2.0 +append/5.0 load/23 loc_sym/getvers10 prepend/1.1 tr2_loc(trreg) +append/6.0 load/24 loc_sym/versinf1 prepend/1.3 tr2_loc/al1(tr2unstable:@) +append/7.0 load/25 loc_sym/versinf2 prepend/1.4 tr2_loc/al2(tr2bar:@) +averssort/1(@) load/26 loc_sym/versinf3 prepend/1.5 tr2_loc/al3(default:tr2exp:trreg:@) +averssort/1.2.4(@) load/27 loc_sym/versinf4 prepend/1.6 tr2_loc/al4(@) +averssort/1.10(@) load/28 loc_sym/versinf5 prepend/1.7 tr2_loc/al5(default:trreg:@) +bad/after(good) load/29 loc_sym/versinf6 prepend/1.8 tr_loc/al1(tr2unstable:trunstable:@) +bad/before load/30 loc_sym/versinf7 prepend/1.9 tr_loc/al2(default:tr2bar:tr2exp:trbar:trreg:@) +bad2/body load/all(default) loc_sym/version1 prepend/2.0 tr_loc/al3(trexp:@) +bad2/proc loc_def/default loc_sym/version2 prepend/2.1 tr_loc/al4(@) +break/1.0 loc_def/truedef loc_sym/version3 prepend/2.2 tr_loc/al5(@) +break/2.0 loc_dv1/1.0 loc_sym/version4 prepend/2.3 trace/all_off +break/3.0 loc_dv1/2.0 loc_sym/version5 prepend/2.4 trace/all_on +break/4.0 loc_dv2/1.0(default) loc_sym/version6 prepend/3.0 uname/cache +break/5.0 loc_dv2/2.0 loc_sym/version7 prepend/3.1 uname/domain +break/6.0 loc_dv3/1.0 loc_sym/version8 prepend/4.0 uname/machine +chdir/1.0 loc_dv3/2.0 loc_sym/version9 prereq/full uname/nodename +chdir/2.0 loc_dv4/1.0 loc_sym/version10 prereq/fullpath uname/release +chdir/3.0 loc_dv6/1.0 loc_sym/version11 prereq/module uname/sysname +chdir/4.0 loc_dv6/2.0/1.0 loc_sym/version12 prereq/orlist uname/unk +coll/a loc_dv7/1.0 loc_sym/version13 prereq/relpath uname/version +coll/b loc_dv7/2.0(default) loc_sym/version14 puts/1 unsetenv/0.6 +coll/c loc_dv7/2.0/1.0 loc_sym/version15 puts/2 unsetenv/0.8 +coll/d loc_dv7/3.0 loc_sym/version16 puts/3 unsetenv/0.9 +conflict/full loc_dv8/1.0 loc_sym/version17 puts/4 unsetenv/1.0 +conflict/fullpath loc_dv8/2.0 loc_sym/version18 puts/5 use/1.0(default) +conflict/module loc_dv9/1.0(default) loc_sym/version19 puts/6 use/2.0 +conflict/relpath loc_dv9/2.0 loc_sym/version20 puts/7 use/2.1 +continue/1.0 loc_dvv1/1.0(default) loc_sym/version21 puts/8 use/2.2 +continue/2.0 loc_dvv1/2.0 loc_sym/version22 recurs/modA use/3.0 +continue/3.0 loc_fq/1.0 loc_sym/version23 recurs/modB use/3.1 +continue/4.0 loc_rc1/1.0(foo) loc_sym/version24 remove/0.3 use/3.2 +continue/5.0 loc_rc1/2.0 loc_sym/version25 remove/0.4 use/4.0 +continue/6.0 loc_rc2/1.0(bar:blah:foo) loc_sym/version26 remove/0.5 use/4.1 +dirmodalias(@) loc_rc2/2.0 loc_tr(reg) remove/1.0 user/adv +dirmodalias/1.0 loc_rc3/1.0(default) loc_tr/1.0(cur:stable) remove/1.3 user/advanced +dirmodvirt loc_rc3/2.0(cur:stable) loc_tr/2.0(next:tr2unstable:trunstable:unstable) remove/1.4 user/exp +dirmodvirt/1.0 loc_rc3/3.0(chk:exp:new:test) loc_tr/3.0(bar:default:exp:foo:reg:tr2bar:tr2exp:trbar:trexp:trreg) remove/1.5 user/expert +empty/1.0 loc_rc4/1.0 loc_tr/al1(unstable:@) remove/1.6 user/nov +eschars/1.0 loc_rc4/2.0(default) loc_tr/al2(bar:default:exp:reg:trexp:@) remove/1.7 user/novice +exit/1.0 loc_rc4/3.0 loc_tr/al3(default:exp:reg:@) remove/2.0 user/undef +exit/2.0 loc_rc5/1.0 loc_tr/al4(default:reg:@) remove/2.3 verbose/msg +exit/3.0 loc_rc5/2.0 loc_virt1/1.0 remove/2.4 verbose/off +exit/4.0 loc_rc6/0.9 loc_virt1/2.0 remove/3.0 verbose/on +getenv/0.6 loc_rc6/1(@) loc_virt1/3.0 remove/3.1 verbose/undef +getenv/1.0 loc_rc6/1.2(default:new) loc_virt1/4.0 remove/4.0 versions/1.1 +help/2.0 loc_rc6/bar(@) loc_virt2/1.0 remove/4.1 versions/1.2 +info/command loc_rc7/0.9 loc_virt2/2.0 remove/4.2 versions/1.3 +info/commandexp loc_rc7/1(@) log/badfac remove/5.0 verssort/1 +info/isavail loc_rc7/1.2 log/err_both_1 setenv/0.6 verssort/1.2.1 +info/isloaded loc_rc7/bar(@) log/err_both_2 setenv/0.7.1 verssort/1.2.4 +info/issaved loc_rc8/0.9(@) log/err_file setenv/0.7.2 verssort/1.8-2015-12-01 +info/isused loc_rc8/1.0 log/err_syslog setenv/0.8 verssort/1.8-2016-02-01 +info/loaded loc_rcv1/1(@) modbad/append-path setenv/1.0 verssort/1.10 +info/mode1 loc_rcv1/1.1 modbad/autoinit source/0.9 whatis/lines +info/mode2 loc_rcv1/1.2(default:new) modbad/empty source/1.0 whatis/multiple +info/mode3 loc_rcv1/2.0 modbad/foo source/1.1 whatis/none +info/mode4 loc_rcv1/bar(@) modbad/help source/1.2 whatis/single +info/mode5 loc_rcv2/1.2 modbad/info-loaded spread/1.0 whatis/string +info/mode6 loc_rcv2/1.5 modbad/is-avail spread/2.0 x-resource/1 +info/name loc_rcv2/2.0 modbad/is-loaded spread/3.0 +info/others loc_sym/1.0 modbad/is-saved spread/4.0 +info/shells loc_sym/alias1 modbad/is-used spread/5.0 +info/shellsexp loc_sym/alias2 modbad/path spread/6.0 " set ts_sh_small "- $modpath.deep - dir2/1.0(d1)