我有一个运行nodejs应用程序的upstart脚本,但是Node.jsnvm一起安装。我从另一个文件中获得一些变量upstart,我的script部分如下所示:

script

. /etc/default/nodejs

exec start-stop-daemon --start  --make-pidfile --pidfile /var/run/app.pid
--chdir /home/node-apps/ --chuid root:root
--exec $NODE_NVM_PATH app.js >> /var/log/node/app.log 2>&1

end script

/etc/default/nodejs(chmod 744)中,我有:
NODE_NVM_PATH=$(which node)

有了which node输出通过nvm安装的nodejs路径的想法;因为如果我更新或更改Node.js版本,我不想编辑此文件中的新路径。
但是使用这种方法,不起作用,而且我的app.js没有运行。我也试过export NODE_NVM_PATH=$(which node),同样的结果。
但如果我说:
NODE_NVM_PATH="/root/.nvm/versions/node/v12.2.0/bin/node"

里面的一切都很完美。
所以我的问题是:
如何才能在另一个文件中执行/etc/default/nodejs,并将其源代码发送给upstart?
笔记:
我还有一个名为which node的环境变量,它输出nodejs的路径,但也不知道如何将其源代码提供给upstart。
实际上,$NVM_BIN指令只在一行中;我在这里用分隔的行粘贴,以避免滚动

最佳答案

尝试反引号“`”,而不是$()

NODE_NVM_PATH=$(which node)

NODE_NVM_PATH=`which node`

echo ${NODE_NVM_PATH}

你可以让我们知道它的作用。

关于node.js - 如何将命令的执行导出到 Upstart 的脚本中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56199824/

10-15 12:01