[英]How can I call "nvm use" in a bash script, and have the selected node version retained after the script executes?
對於需要從 Node.js 12 更新到 14 的構建過程,我想要一個 bash 腳本來檢測是否安裝了nvm
,如果是,請nvm use v14
(或nvm install v14
,如果需要),然后我想要在 bash 腳本終止后, nvm-selected 節點版本將保持在 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
僅在 bash 腳本中執行nvm
命令是一件痛苦的事情,因為nvm
不是真正的命令,而是 shell function 腳本的前三行用於設置腳本,並且nvm
用於設置腳本
output 是:
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
但是,當腳本完成時:
我認為訣竅可能是確保腳本退出時環境變量NVM_BIN
在 v14 路徑中持續存在,但我不知道該怎么做。 事實上,我認為 shell 通常不允許執行腳本來更改父 shell 中的環境變量。
然而, nvm
命令本身就是一個 shell 腳本,無論它做什么,在它執行完成后都是持久的。 我也應該有某種方法來實現這一點。
我想如果你用 nvm 設置一個別名作為默認值,
nvm alias default 14.0.0
節點版本將在任何新的終端實例中持續存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.