3

我想要的是打开默认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'"

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

4

1 回答 1

2

不幸的是,将启动命令传递给zshwith-c 使其保持打开以供交互式使用 (with -i) 是行不通的。

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

这是一个解决方法:

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

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

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

但是请注意,正在执行的两个命令都将在它们的输出(如果有的话)显示之前打印,前面有提示符 - 就好像这些命令是交互式输入的一样。

于 2016-10-19T19:42:37.790 回答