Cygwin:在 mintty/bash 中运行脚本

Cygwin:在 mintty/bash 中运行脚本

最初在 SO.com 上提问,但我关闭了它。我认为它更适合 SU.com。如果那也不是合适的地方,请告诉我。

我想向.sh 文件添加上下文菜单以便在 cygwin 中运行它。

我尝试操作默认的“在此打开 Cygwin”命令:

C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"

不幸的是,我得到的只是一个立即再次关闭的窗口。
另外,我不能 100% 确定 xhere 参数的用途和含义是什么。

这是有效的:

C:\cygwin\bin\bash.exe %1

但我希望使用 mintty 作为终端窗口。

最后一个问题:
有没有办法将要执行的命令字符串添加到“在此处打开 Cygwin”字符串中?

答案1

感谢@vaz_az 给予我动力。

cygwin 的问题在于它需要 POSIX 样式的路径。

这意味着您必须转换%1Windows 提供的文件参数。这可以使用cygpath工具完成。以下代码显示了可在 regedit 中用作命令的一行代码:

C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(/bin/cygpath "%1")'

下面几行是一些示例,说明如何使用一行代码完成以下任务:

#Simple
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1")'

#Fire and Forget (With 1 second delay at the end to read any messages)
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1"); echo DONE; sleep 1'

#With logging to static file
C:\cygwin\bin\mintty.exe -l C:\cygwin\home\Nippey\cygwin.log -e /bin/bash -l -c '$(cygpath "%1")'

#With interactive shell after execution (Unfortunately the -i parameter of bash does not work together with -c, so you have to start a sub-shell)
C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(cygpath "%1"); bash'

答案2

您 应该 尝试 使用 下面 的 命令 : C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '%1'.

相关内容