【发布时间】:2016-04-11 02:31:17
【问题描述】:
我正在尝试编写一个 Node.js 脚本,该脚本将在一个新进程、一个新命令窗口中启动一个 Node.js 服务器。
我相信我很接近。我有这个:
var n = cp.spawn('sh', [ 'start-server.sh' ]);
start-server.sh的内容是这样的
#!/usr/bin/env bash
node bin/www
这成功启动了服务器,但它没有打开一个新的终端窗口,所以我看不到生成进程的任何 stdio。
所以我想我应该在bash脚本中打开一个新的终端窗口,然后运行node命令,这样bash脚本的内容就会变成
#!/usr/bin/env bash
terminal -e "node bin/www"
问题是命令行无法识别“终端”。这是为什么?我相信“终端”命令应该默认使用任何程序作为您的默认终端应用程序。
请告知这是否是最好的方法,以及为什么在 OSX 的命令行中可能无法识别“终端”,谢谢!
这就是我的路径
echo $PATH
/Users/amills001c/.rvm/gems/ruby-2.2.1/bin:/Users/amills001c/.rvm/gems/ruby-2.2.1@global/bin:/Users/amills001c/.rvm/rubies /ruby-2.2.1/bin:/Users/amills001c/google_app_engine_stuff/google-cloud-sdk/bin:/usr/local/bin:/usr/local/bin/meteor:/usr/local/redis/bin:/ usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/amills001c/golang/bin:/Users/amills001c/apache-maven-3.3 .3/bin:/Users/amills001c/.rvm/bin
【问题讨论】:
-
您为什么认为
terminal应该运行默认终端?它在任何其他情况下都有效吗? -
也许我将 Windows 与 OSX 混淆了,但这是我的印象。但是现在命令行无法识别“终端”。我只想打开任何终端窗口,无论是 OSX 上的默认 bash 终端还是 iterm2/iterm3
-
在我的 Mac 上的应用程序/实用程序中,我有 terminal.app,我想我可以运行它
-
我对你的问题感到困惑。您提到了 OSX,但您已将您的问题标记为 linux。其中哪一部分是关于 Linux 的?
-
另外,这看起来很像XY Problem。您要求我们帮助您实施一个几乎可以肯定不是解决您的潜在问题的最佳方法的解决方案。您是否考虑过使用GNU Screen 或 tmux?或者只是将您的 stdout/stderr 重定向到日志文件?
标签: linux node.js macos bash shell