是否可以设置 Cygwin,以便如果我使用任意 Windows 原生启动方法(cmd.exe、Total Commander 命令行)从任意路径调用 Cygwin.bat,它将启动在该目录中准备的 bash?
例如,如果我运行 cmd.exe 并执行以下操作(假设 Cygwin.bat 在我的上PATH
):
C:\Users\Me>cd testdir
C:\Users\Me\testdir>dir /b
myfile1
myfile2
C:\Users\Me\testdir>Cygwin
Cygwin 窗口打开了,我回到了上次停止的地方:
me@here /cygdrive/c/Users/Me/testdir
$ ls
myfile1* myfile2*
me@here /cygdrive/c/Users/Me/testdir
正如您所见,当我收到 Cygwin 提示时,我已经位于testdir
,而不是/home/me
。
(我将使用它的更典型场景是从 Total Commander 的命令行运行 Cygwin,但我猜它应该以相同的方式工作。)
如何实现这一点?
答案1
我可以帮你破解一些东西。将其放入你路径中的批处理文件中(我将它命名为cygwin.bat
,并通过输入 来调用它cygwin.bat
):
@echo off
set pth=%CD:~2,99%
set pth=%pth:\=/%
set drv=%CD:~0,1%
set "fullpath=/cygdrive/%drv%%pth%"
C:\cygwin\bin\bash.exe --login -i -c "cd ""%fullpath%""; exec /bin/bash"
答案2
这更简单 .bat
文件(.cmd
就我而言)是工作正常为我:
c:\CygWin\bin\bash.exe --login -i -c "export CD='%CD%'; cd \"$CD\"; exec /bin/bash"
已测试工作于:
- 命令。
- 总指挥官。
- 远程 SSH 会话。
- 开始菜单-->运行(在这种情况下它在打开
C:\Users\Me
)。