我想要的是打开默认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。
答案 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"
但请注意,正在执行的两个命令都将打印,然后才会显示输出(如果有),前面会出现提示 - 就好像这些命令是以交互方式输入的一样。