Some variables, that were unquoted intentionally were converted to arrays.
According to ShellCheck's documentation:
Quoting variables prevents word splitting and glob expansion, and prevents
the script from breaking when input contains spaces, line feeds, glob
characters and such.
Related: https://www.shellcheck.net/wiki/SC2086
Related: #470
These occurrences do not seem to cause any problems described below but
let's still fix it for the sake of consistency within this script.
According to ShellCheck's documentation:
ShellCheck noticed that you have used a variable as an array, but then assign
it a string. array=foo is equivalent to array[0]=foo, and leaves the rest
of the elements unaffected.
Related: https://www.shellcheck.net/wiki/SC2178
Related: #470
According to ShellCheck's documentation:
-a and -o in [ .. ] test expressions are not well defined, and can cause
incorrect results when arguments start with dashes or contain !.
Related: https://www.shellcheck.net/wiki/SC2166
Related: #470
According to ShellCheck's documentation:
Bourne shells are very whitespace sensitive. Adding or removing spaces can
drastically alter the meaning of a script.
Related: https://www.shellcheck.net/wiki/SC1035
Related: #470
According to ShellCheck's documentation:
Different shells support different features. To give effective advice,
ShellCheck needs to know which shell your script is going to run on.
Related: https://www.shellcheck.net/wiki/SC2148
Related: #470
Update shell completion scripts to make use of the module option -o to
control the element to find in output rather using sed command to discard
the unwanted elements.
`-E` option is a *relatively* recent option of GNU sed (v4.2), yet
mandatory for OS portability (as detailled in b68e44e).
Adapt configure step to detect if sed option `-E` is supported and
fallback to `-r` otherwise.
Fixes#317
`compopt` Bash builtin has been introduced in Bash 4.0, so using it on
Bash <4.0 prints error messages. To fix this, `comptopt` availability is
checked prior usage. If not available, the no-space-append behavior will
not be obtained which will not be an optimal situation if the
`no-indepth` mode is set for the `avail` sub-command.
Fixes#318
Add the ability to control whether or not a ``ml`` command should be
defined at Modules initialization time. `ml` is a handy frontend to the
module command: it reduces the number of characters to type to trigger
module.
Enablement is managed throught a new configuration option named `ml`
(which defines `MODULES_ML` environment variable when set). It may be
enabled by default in `modulecmd.tcl` script with option `--enable-ml`
passed to `./configure` script.
Make MODULESHOME environment variable controllable through the `config`
sub-command with `home` configuration option. A `--with-moduleshome`
argument is also added to the ./configure script to set specific default
value for this option at installation time.
Fixes#292
Add the ability to select a module when its version is partially
specified. Enable this behavior through a new configuration option named
`extended_default` (which defines `MODULES_EXTENDED_DEFAULT` environment
variable when set).
When extended_default mechanism is enabled a module version may be
specified by its starting portion, part separated from the rest of the
version string by a `.` or `-` character.
When multiple versions match partial version specified and only one
module should be returned, default version (implicit or explicit) among
matches is returned. In case `implicit_default` is disabled and no
explicit default is found among matches, an error is returned.
Mechanism may be enabled by default in `modulecmd.tcl` script with
option `--enable-extended-default` passed to `./configure` script.