【问题标题】:nodejs active on boot with nvm $HOME/nvm/nvm.shnodejs 在启动时使用 nvm $HOME/nvm/nvm.sh 处于活动状态
【发布时间】:2012-11-25 23:46:46
【问题描述】:

我用 nvm 安装了节点,它工作正常,但每个新会话我都需要执行 source $HOME/nvm/nvm.sh 以激活节点

如何才能在启动时处于活动状态,这样就无需在每个 sssh 会话中输入 source $HOME/nvm/nvm.sh

我尝试将此命令 source $HOME/nvm/nvm.sh 添加到 /etc/rc.local 但我收到以下错误

>  /etc/init.d/node_start.sh: 13: root/nvm/nvm.sh: Bad substitution
>     /etc/init.d/node_start.sh: 78: root/nvm/nvm.sh: [[: not found
>     /etc/init.d/node_start.sh: 78: root/nvm/nvm.sh: [[: not found
>     /etc/init.d/node_start.sh: 129: root/nvm/nvm.sh: [[: not found
>     /etc/rc.local: 14: /etc/rc.local: source: not found

但如果我在 shell 上执行该命令正常工作

欢迎任何帮助

问候

【问题讨论】:

    标签: node.js nvm


    【解决方案1】:

    您应该在 ~/.bashrc 文件的末尾添加以下行:

    [[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh
    

    【讨论】:

      【解决方案2】:

      init 脚本以 root 身份运行,而不是您的用户。如果您想获取自己的nvm.sh,则不应使用$HOME,而应使用/home/vitor/nvm/nvm.sh 之类的绝对路径。此外,初始化脚本可能在 dash 下运行,因此您不应使用 [[ 构造。只需使用[ 代替this dash as /bin/sh article 中所述

      于是我去阅读了https://github.com/creationix/nvm/blob/master/nvm.sh的nvm.sh源代码

      我认为这与破折号不兼容。所以我建议你把 nvm.sh 留在文件系统的其他地方,然后在你的初始化脚本中做

      exec /bin/bash /root/nvm/nvm.sh
      

      #!/bin/bash 开头的node_start.sh 也可能就足够了。

      您可能还想订阅issue 168 on github for nvm,其他人遇到此错误。

      【讨论】:

      • 您好,请回复,但我听从您的建议并不断收到相同的错误,我的路径是 /root/nvm/nvm.sh
      • 如果您实际发布了引发错误的源代码,您认为我们能够或多或少轻松地帮助您吗?
      【解决方案3】:

      我希望您的初始化脚本以#!/bin/sh 开头,而它需要以#!/bin/bash 开头。当然,不使用 Bash 编写 init 脚本可能有很多很好的理由......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        相关资源
        最近更新 更多