无法定位nvm安装路径及在其他Shell脚本中使用nvm的问题求助
最近在Ubuntu 24.04环境下折腾nvm的时候碰到了两个头疼的问题:一是找不到nvm的具体安装路径,二是写Shell脚本时没法正常调用nvm相关命令。我先把直接输入nvm后弹出的帮助信息整理出来,麻烦各位大佬帮我分析分析怎么解决!
nvm基础说明
Node Version Manager (v0.40.3)
<version> 指的是nvm能识别的任何版本格式字符串,包括:
- 完整或部分版本号,可带可选前缀"v"(比如0.10、v0.1.2、v1)
- 内置默认别名:node、stable、unstable、iojs、system
- 你通过
nvm alias foo自定义的别名
所有支持彩色输出的选项都可以通过--no-colors参数禁用彩色显示。
可用命令及参数列表
nvm --help
显示本帮助信息
nvm --no-colors
强制禁用彩色输出
nvm --version
打印当前已安装的nvm版本号
nvm install [<version>]
下载并安装指定<version>;如果省略版本号且当前目录存在.nvmrc文件,则自动使用该文件中的版本。
以下可选参数必须紧跟在nvm install之后:
-s:跳过二进制包下载,仅从源码编译安装-b:跳过源码下载,仅使用二进制包安装--reinstall-packages-from=<version>:安装完成后,自动重新安装指定版本(node/iojs/具体版本号)中的全局npm包--lts:仅筛选安装LTS(长期支持)版本--lts=<LTS name>:仅筛选安装指定LTS分支下的版本--skip-default-packages:安装时跳过default-packages配置文件(如果存在)--latest-npm:安装完成后,尝试升级到当前Node版本兼容的最新npm版本--no-progress:禁用下载过程中的进度条显示--alias=<name>:安装完成后,将指定别名指向当前安装的版本(等同于单独执行nvm alias <name> <version>)--default:安装完成后,将default默认别名设置为当前安装的版本(等同于单独执行nvm alias default <version>)--save:安装完成后,将当前版本写入.nvmrc文件
nvm uninstall <version>
卸载指定的Node版本
nvm uninstall --lts:通过自动LTS别名lts/*卸载对应版本(如果该别名存在)nvm uninstall --lts=<LTS name>:通过指定LTS分支的自动别名卸载对应版本(如果该别名存在)
nvm use [<version>]
修改当前Shell的PATH环境变量,切换到指定Node版本;如果省略版本号且当前目录存在.nvmrc,则自动使用该文件中的版本。
可选参数需紧跟在nvm use之后:
--silent:静默模式,不输出任何stdout/stderr内容--lts:自动使用LTS别名lts/*对应的版本(如果该别名存在)--lts=<LTS name>:自动使用指定LTS分支别名对应的版本(如果该别名存在)--save:将当前切换的版本写入.nvmrc文件
nvm exec [<version>] [<command>]
在指定Node版本的环境下运行指定命令;如果省略版本号且当前目录存在.nvmrc,则自动使用该文件中的版本。
可选参数需紧跟在nvm exec之后:
--silent:静默模式,不输出任何内容--lts:自动使用LTS别名lts/*对应的版本(如果该别名存在)--lts=<LTS name>:自动使用指定LTS分支别名对应的版本(如果该别名存在)
nvm run [<version>] [<args>]
在指定Node版本环境下运行node命令,并传入指定参数;如果省略版本号且当前目录存在.nvmrc,则自动使用该文件中的版本。
可选参数需紧跟在nvm run之后:
--silent:静默模式,不输出任何内容--lts:自动使用LTS别名lts/*对应的版本(如果该别名存在)--lts=<LTS name>:自动使用指定LTS分支别名对应的版本(如果该别名存在)
nvm current
显示当前Shell环境中激活的Node版本
nvm ls [<version>]
列出本地已安装的所有Node版本;如果指定版本号,则只列出匹配的版本
--no-colors:禁用彩色输出--no-alias:不显示所有别名对应的版本信息
nvm ls-remote [<version>]
列出远程仓库中可安装的所有Node版本;如果指定版本号,则只列出匹配的版本
--lts:仅显示LTS版本--lts=<LTS name>:仅显示指定LTS分支下的版本--no-colors:禁用彩色输出
nvm version <version>
将指定的版本描述(比如别名、版本号片段)解析为单个本地已安装的具体版本号
nvm version-remote <version>
将指定的版本描述(比如别名、版本号片段)解析为单个远程仓库中的具体版本号
--lts:仅从LTS版本中筛选匹配项--lts=<LTS name>:仅从指定LTS分支的版本中筛选匹配项
nvm deactivate
撤销nvm对当前Shell环境变量的所有修改
--silent:静默模式,不输出任何内容
nvm alias [<pattern>]
显示所有以指定<pattern>开头的别名
--no-colors:禁用彩色输出
nvm alias <name> <version>
创建/修改别名<name>,使其指向指定的<version>
nvm unalias <name>
删除指定的别名<name>
nvm install-latest-npm
尝试将当前激活的Node版本对应的npm升级到最新可用的兼容版本
nvm reinstall-packages <version>
将指定版本中安装的全局npm包,重新安装到当前激活的Node版本中
nvm unload
从当前Shell环境中完全卸载nvm(恢复到未安装nvm前的状态)
nvm which [current | <version>]
显示指定版本(或当前激活版本)的Node可执行文件路径;如果省略版本号且当前目录存在.nvmrc,则自动使用该文件中的版本
--silent:当指定版本不存在时,静默不输出错误信息
我的具体问题补充
- 我在终端直接输入
nvm能正常弹出上面这些帮助,但用which nvm或者whereis nvm都找不到它的安装路径,想知道nvm到底装在哪? - 我写了个简单的Shell脚本,里面用了
nvm use 18这样的命令,但执行脚本时却提示nvm: command not found,这该怎么解决才能让脚本识别nvm命令呀?
麻烦各位大佬给点实际的解决思路,感谢感谢!🙏




