对于需要从 Node.js 12 更新到 14 的构建过程,我想要一个 bash 脚本来检测是否nvm已安装,如果是,则执行nvm use v14(或nvm install v14如果需要),然后我想要 nvm 选择的节点版本在 bash 脚本终止后保持在 14 ,而不仅仅是在脚本运行期间。
我可以使用此脚本切换到 v14,但脚本终止后,shell 环境仍保持在 v12:
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
source ~/.bashrc
nvm --version
echo $NVM_BIN
node --version
nvm use v14
echo $NVM_BIN
node --version
Run Code Online (Sandbox Code Playgroud)
仅在 bash 脚本中执行该nvm命令很痛苦,因为nvm它不是真正的命令,而是 shell 函数,并且脚本必须使用前三行来设置nvm脚本。
输出是:
0.33.11
/home/pi/.nvm/versions/node/v12.21.0/bin
v12.21.0
Now using node v14.16.0 (npm v6.14.11)
/home/pi/.nvm/versions/node/v14.16.0/bin
v14.16.0
Run Code Online (Sandbox Code Playgroud)
然而,当脚本完成时:
我认为技巧可能是确保NVM_BIN脚本退出时环境变量保留在 v14 路径中,但我不知道该怎么做。事实上,我认为执行脚本的shell通常不允许更改父shell中的环境变量。
然而,该nvm命令本身是一个 shell 脚本,无论它执行什么操作,在执行完成后都是持久的。我也应该有某种方法来实现这一点。
我想如果你设置一个默认为 nvm 的别名,
nvm alias default 14.0.0
Run Code Online (Sandbox Code Playgroud)
节点版本将在任何新的终端实例中持续存在。
| 归档时间: |
|
| 查看次数: |
4518 次 |
| 最近记录: |