node.js不尊重$ PATH变量中的所有路径

时间:2014-08-19 08:33:20

标签: node.js child-process

这个问题与此有关 Nodejs Child Process with Unix Executable

但是我找不到一个好的解决方案,多亏了我的声望点,我无法在那里发表评论。

为了解释我的问题,我有一些我自己的可执行文件,我需要从node.js执行。这些可执行文件的路径已在PATH变量中设置。因此,我可以在没有任何路径前缀的情况下运行我的可执行文件。

尽管如此,node.js将 process.env.PATH 设置为以下值:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

我尝试在生成进程之前将路径附加到它:

process.env.PATH = process.env.PATH + ":<path_to_my_executables>"

但是进程退出时有127个Shell代码,这是&#34;命令未找到&#34;如果我没记错的话。

有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我使用shell脚本完成了它。肯定有一个更好的解决方案。

我首先在shell脚本中将所需的路径导出到我的可执行文件(及其依赖项),然后开始执行。因此shell脚本结构类似于:

export JAVA_HOME=<java_path>
export EXECUTABLES_HOME=<executables_path>
export PATH="$PATH:$JAVA_HOME/bin:$EXECUTABLES_HOME"
<execute_required_executable> <arguments>

如果有人有更好的解决方案,请告诉我!