如何打开shell然后在其中执行命令

时间:2016-10-19 17:42:57

标签: shell unix command-line conemu cmder

我想要的是打开默认shell,然后调用另一个并在那里执行命令。

正在尝试这样的事情:

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

cmd /k "c:/Windows/System32/bash.exe -c zsh" & zstyle - 这个打开的shell但不运行命令

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

目前我正在使用cmder / conemu终端进行Windows。

1 个答案:

答案 0 :(得分:1)

不幸的是,通过zsh 将<{1}}的命令传递给-c并将保持打开以供交互式使用(使用-i)并不起作用

免责声明:以下解决方案是从常规命令提示符(cmd.exe)进行测试的,而不是cmder / conemu,但我也期望它们在那里工作。
要从PowerShell(v3 +)中尝试它们,请在--%之后插入bash.exe作为第一个参数。

这是一个解决方法:

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

请注意,命令zstyle不同的瞬态 zsh实例中执行,因此这种方法不适用于的目的修改保持打开的交互式shell的环境 如果这是一个要求,事情会变得更复杂(这个解决方案由this answer提供):

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

但请注意,正在执行的两个命令都将打印,然后才会显示输出(如果有),前面会出现提示 - 就好像这些命令是以交互方式输入的一样。