2016-01-06 2 views
0

Я пытаюсь написать сценарий Node.js, который запустит сервер Node.js в новом процессе в новом командном окне.bash: terminal: command не найден

Я считаю, что я близко. У меня есть это:

var n = cp.spawn('sh', [ 'start-server.sh' ]); 

содержимое start-server.sh, как так

#!/usr/bin/env bash 
node bin/www 

это запускает сервер успешно, но он не открывает новое окно терминала, так что я могу» я не вижу ни одного из stdio порожденного процесса.

Так что я имею в виду, что я должен открыть новое окно терминала в сценарии Баш, а затем выполнить команду узла, так тогда содержимое Баш скрипт станет

#!/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- [email protected]/bin: /Users/amills001c/.rvm/rubies/ruby-2.2.1/bin:/Users/amills001c/google_app_engine_stuff/Google-облако SDK/бен:/USR/местные/бен:/USR/местные/бен/метеор:/USR/местные/Redis/бен:/USR/бен:/бен:/USR/SBIN:/SBIN:/USR/местные/бен:/USR/местные/мерзавец/бен:/Пользователи /amills001c/golang/bin:/Users/amills001c/apache-maven-3.3.3/bin:/Users/amills001c/.rvm/bin

+0

Почему вы считаете, что «терминал» должен запускать терминал по умолчанию? Работает ли он в любом другом контексте? –

+0

Возможно, я запутываю окна с OSX, но это было мое впечатление. Но теперь «терминал» не распознается в командной строке. Я просто хочу открыть любое окно терминала, независимо от того, является ли он базовым терминалом bash на OSX или iterm2/iterm3 –

+0

в приложениях/утилитах на моем Mac, у меня есть terminal.app, я думаю, я мог бы запустить это –

ответ

3

Проверьте подлинное имя команды «terminal» в вашей системе, чтобы проверить ее, например, в Ubuntu do/usr/bin/env | Grep терминал», в моем случае это„гном-терминал“, а затем использовать„гном-терминал -e XXX“должен работать Надеюсь, что это помогает J.

+0

Вопрос запрашивает окно терминала OSX, это не вопрос, связанный с Ubuntu. –

4

В OS X вы обычно выполнить команду следующим образом:.

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

что бы открыть новое окно терминала и выполнить скрипт

+0

это работает для меня «open -b com.apple.terminal», знаете ли вы, для чего нужны опции -a vs -b? –

+1

'-a' указывает приложение, используемое для открытия файла,' -b' указывает идентификатор пакета для приложения, которое будет использоваться при открытии файла. Это, по сути, всего два разных способа указать приложение для открытия файла. –

+0

Да, первая часть работает (open -a Terminal.app), но она, похоже, не выполняет сценарий. Скрипт работает сам по себе, поэтому что-то странное, но спасибо, это помогает –

0

То, что сработало для меня это:

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 файл с defaul т приложение, которое случается быть iterm2 для меня, не Terminal.app

следующая проблема у меня есть, я должен пройти путь в качестве аргументов для .Sh файлов, и я не знаю, как сделать это еще

+0

Вероятно, это не сработает в Linux. – ghoti

+0

Да, возможно, нет, если вы можете посоветовать, как создать быстрое и грязное решение на Linux, которое поможет мне –

+1

Зависит от среды вашего рабочего стола. Как сказал кто-то другой, 'gnome-terminal' запускает терминал, если вы используете Gnome. Вы можете попробовать «gnome-open» в качестве замены для «открытого» OSX. Но это не сработает, если ваша среда рабочего стола Linux - KDE или Afterstep или менеджер оконной панели. Если вы хотите что-то, что на самом деле не зависит от платформы, вам, скорее всего, не повезло, если вы не перейдете только к тексту и не используете GNU Screen. – ghoti