代码之家  ›  专栏  ›  技术社区  ›  kshetline

如何在bash脚本中调用“nvm use”,并在脚本执行后保留选定的节点版本?

  •  0
  • kshetline  · 技术社区  · 4 年前

    对于需要从更新的生成进程节点.js从12到14,我想要一个bash脚本来检测 nvm 已安装,如果已安装,请执行 nvm use v14 nvm install v14 如果必要的话),然后我希望nvm选择的节点版本保持在14 bash脚本终止后

    我可以用这个脚本切换到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脚本中的命令很痛苦,因为 非挥发性物质 非挥发性物质 为了剧本。

    输出为:

    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
    

    enter image description here

    我认为关键在于确保环境变量 NVM_BIN 脚本退出时会在v14路径上保持,但我不知道如何做到这一点。事实上,我认为执行脚本的shell通常不允许更改父shell中的环境变量。

    这个 非挥发性物质 然而,commmand本身就是一个shell脚本,它所做的任何事情在执行完之后都是持久的。我也应该有办法做到的。

    1 回复  |  直到 4 年前
        1
  •  1
  •   pritam    4 年前

    我想如果你用nvm设置一个别名作为默认值,

    nvm alias default 14.0.0