如何打开Shell并在其中执行命令

3
我想要做的是打开默认Shell,然后调用另一个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个回答

2
很遗憾,使用-c将启动命令传递给zsh并同时保持交互式使用(使用-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"

请注意,无论何时执行两个命令,它们的输出(如果有)都会在提示符之前被打印出来,就像这些命令是交互式输入一样。但请注意,此处保留了HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接