2016-10-19 2 views
1

Что я хочу - открыть оболочку по умолчанию, а затем вызвать другую и выполнить там команду.Как открыть оболочку, а затем выполнить команду внутри нее

пытался что-то вроде этого:

c:/Windows/System32/bash.exe -c "zsh & zstyle"

или

cmd /k "c:/Windows/System32/bash.exe -c zsh" & zstyle - это открытая оболочка, но не пробежать команды

или

c:/Windows/System32/bash.exe -c "zsh -c 'zstyle'"

В настоящее время я использую терминал cmder/conemu для окон.

+0

Если ответ решает вашу проблему, пожалуйста, примите его, нажав на большую галочку (✓) рядом с ней и, возможно, также проголосуйте за нее (для голосования на голосование требуется не менее 15 точек репутации). Если вы нашли другие ответы полезными, попробуйте их проголосовать. Приём и голосование помогают будущим читателям. См. [Соответствующую статью справочного центра] (http://stackoverflow.com/help/someone-answers). Если ваш вопрос еще не полностью ответил, пожалуйста, сообщите об этом. – mklement0

+0

@ mklement0 да, просто подождите, если кто-нибудь захочет добавить что-нибудь, проверьте его на днях и примите, не волнуйтесь) Thx для ответа. – AuthorProxy

ответ

1

К сожалению, передавая стартап на команду zsh с -cи держать его открытым для интерактивного использования (с -i) не работает.

Отказ от ответственности: Следующие решения были протестированы из обычной командной строки (cmd.exe), а не cmder/conemu, хотя я ожидал, что они тоже там будут работать.
Чтобы попробовать их из PowerShell (v3 +), вставьте --% в качестве первого аргумента после (сразу после bash.exe).

Вот обходной путь:

c:/Windows/System32/bash.exe -c "zsh -c 'zstyle' && exec zsh -i" 

Обратите внимание, что команда zstyle выполняется в различных, переходныхzsh экземпляра, так что этот подход не будет работать для команды, цель которых состоит в изменить окружающую среду интерактивной оболочки, которая остается открытой.
Если это требование, все становится более сложным (это решение любезно this answer):

c:/Windows/System32/bash.exe -c "{ { echo 'zstyle'; echo 'exec 0<&3-';} | zsh -i; } 3<&0" 

Заметим, однако, что обе команды выполняется будут напечатаны перед их выходом, если таковые имеются, показано , которому предшествует подсказка - как будто команды были введены в интерактивном режиме.

Смежные вопросы