最初在 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 样式的路径。
这意味着您必须转换%1
Windows 提供的文件参数。这可以使用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'
.