繁体   English   中英

bash:终端:找不到命令

[英]bash: terminal: command not found

我正在尝试编写一个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"

问题是在命令行上无法识别“终端”。 这是为什么? 我相信“ terminal”命令应该默认为被用作默认终端应用程序的任何程序。

请告知这是否是最好的方法,以及为什么在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:/用户/amills001c/.rvm/bin

在OS X中,通常会像这样运行命令:

open -a Terminal.app /path/to/script.sh

这将打开一个新的终端窗口并执行您的脚本。

检查系统中“ terminal”命令的真实名称,以进行检查,例如,在Ubuntu中执行“ / usr / bin / env | grep terminal”,在我的情况下为“ gnome-terminal”,然后使用“ gnome” -terminal -e XXX“应该可以。 希望对J有帮助。

对我有用的是:

var cp = require('child_process');

cp.spawn('sh', [ 'start-server.sh' ], {
            detached: true,
            env: {
                NODE_ENV: process.env.NODE_ENV
            }
        });

#!/usr/bin/env bash    (start-server.sh)
open "./run-node.sh"

#!/usr/bin/env bash    (run-node.sh)
node ./bin/www.js

open命令将使用默认应用程序打开.sh文件,这对我来说恰好是iterm2,而不是terminal.app

下一个问题是我必须将路径作为.sh文件的参数传递,但我还不知道该怎么做

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM