fish安装node.js环境
为什么强调fish shell,因为fish shell的缘故,不能直接执行node.js官网的命令
好的,您遇到了一个非常典型且重要的问题。请仔细阅读我的分析,这能帮您彻底解决问题。
问题诊断
您看到的所有错误,归根结底有两个核心原因:
- 您正在使用 Fish Shell:从命令行末尾的
fish:
提示可以看出,您使用的不是 Linux 默认的bash
,而是fish
。Fish Shell 的脚本语法与bash
不兼容。 - 错误的加载方式:
nvm
的标准安装脚本和您执行的加载命令\. "$HOME/.nvm/nvm.sh"
都是为bash
或zsh
设计的。当 Fish 尝试去读取nvm.sh
这个 bash 脚本时,它无法理解其中的语法(比如错误信息里的Unexpected ')' found
),因此加载失败。
加载失败的直接后果就是,nvm
命令在您的 Shell 中根本不存在,所以系统会提示 nvm: command not found
。
请不要按照系统的建议去用 sudo zypper install nodejs-common
,那会绕开我们想要使用的 nvm
,导致版本管理混乱。
根本的解决方法
我们需要用“Fish 的方式”来安装和使用 nvm
。最推荐的方法是使用一个名为 nvm.fish
的包装器(wrapper),它能让 nvm
完美地在 Fish Shell 中工作。
请按照以下步骤操作,这将一劳永逸地解决您的问题。
操作步骤
第一步:彻底清理旧的、不完整的安装
我们必须先删除之前错误的安装留下的痕迹。
在您的终端里执行以下命令,彻底删除 .nvm
目录:
rm -rf ~/.nvm
然后,检查一下 .bashrc
文件,确保里面没有 nvm
相关的代码(根据日志,它可能被添加过)。
# 这个命令会打开文件,检查并删除包含 "NVM_DIR" 的行,然后保存退出
# 如果您不熟悉 vim,也可以用图形界面的文本编辑器打开 /home/yqh/.bashrc
vim ~/.bashrc
(进入 vim 后,找到相关行,按 dd
删除,然后按 :wq
保存退出)
第二步:为 Fish 安装插件管理器 fisher
fisher
是 Fish Shell 最流行的插件管理器。如果还没有安装,请用下面这个命令安装:
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
第三步:使用 fisher
安装 nvm.fish
这是最关键的一步。执行以下命令来安装 nvm
的 Fish 包装器:
fisher install jorgebucaran/nvm.fish
安装完成后,请重启您的终端,或者新开一个终端窗口,以确保配置完全生效。
第四步:安装并使用 Node.js
现在,您的 nvm
已经准备就绪,可以正常使用了!
-
安装 Node.js v22:
nvm install 22
您会看到一个下载和安装的进度条。
-
验证安装:
node -v npm -v nvm current
这次,您应该能看到正确的版本号输出,不再有任何
command not found
的错误。
现在,您的开发环境已经按照最适合 Fish Shell 的方式搭建完毕了。