Skip to content

Commit

Permalink
[Fix] nvm exec: no longer error with '-q: invalid option' for zsh u…
Browse files Browse the repository at this point in the history
…sers

the `nvm.sh` file assigns and exports an `NVM_CD_FLAGS` variable if it
was sourced from a zsh shell. the fact that it's exported means that
it'll be assigned in all child processes, including the `nvm-exec`
script, which uses bash as the interpreter.

Bash's `cd` command doesn't have a `-q` flag, so if the `NVM_CD_FLAGS`
is assigned `-q`, the script will error out and incorrectly claim that
the node version isn't installed.

this also manifests itself in the `nvm exec` command.

Example:

```console
$ nvm exec 16.14.0 npm --version
Running node v16.14.0 (npm v8.3.1)
/Users/<ME>/.nvm/nvm.sh: line 28: cd: -q: invalid option
cd: usage: cd [-L|[-P [-e]] [-@]] [dir]
both the tree and the node path are required
N/A: version "v16.14.0 -> N/A" is not yet installed.

You need to run "nvm install v16.14.0" to install it before using it.
```

To address this, we unset the `NVM_CD_FLAGS` at the start of the
`nvm-exec` script, before loading `nvm.sh`.
  • Loading branch information
spikegrobstein authored and ljharb committed Apr 22, 2023
1 parent c08b38a commit 70aa611
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions nvm-exec
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

unset NVM_CD_FLAGS

# shellcheck disable=SC1090,SC1091
\. "$DIR/nvm.sh" --no-use

Expand Down

0 comments on commit 70aa611

Please sign in to comment.