在特定文件夹中打开Cygwin

我如何创build一个Cygwin的快捷方式,将打开Cygwin在特定的文件夹? 这将避免input

cd /cygdrive/c/Users/Tom/Desktop/ 

每次我启动Cygwin。

当你安装Cygwin的时候(或者你已经安装了它,再次下载并重新开始安装以运行更新),请确保你select了“Shells”类别下的chere软件包。

Cygwin启动后,打开Cygwinterminal(以pipe理员身份),然后键入命令: chere -i -t mintty

现在,您应该在Windows右键单击上下文菜单中有“Bash Prompt Here”。

( mintty是Cygwin的默认terminal,如果你没有用-t选项select它,你的“Bash Prompt Here”将使用与Windows命令提示符相同的terminal,这会阻止水平resize。

这是我使用的。 它不需要chere包或registry修补程序。 适用于Windows 7。

转到您的“发送到”文件夹:

 C:\Users\<your_user_name>\AppData\Roaming\Microsoft\Windows\SendTo 

Target字段中创build一个名为Bash Here的快捷方式:

 C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bash" 

在Windows资源pipe理器中,右键单击一个文件夹并selectSend To > Bash Here

这是相反的技巧,打开当前bash目录中的Windows资源pipe理器。 创build这个别名:

 alias winx='/cygdrive/c/Windows/explorer.exe /e,\`cygpath -w .\`' 

注意: cygpath -w . 上面的部分是封闭的反标记。

现在只要在bash提示符下键入winx ,就会popup一个Win Explorer。

注意:如果winx引导你到你的文档文件夹,请尝试

 alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`' 

我做了一个.reg文件,在右键单击上下文菜单中放置“打开Cygwin在这里”选项。 这取决于Cygwin的“chere”软件包,如果您没有在初始设置中安装,可以使用apt- cyg进行安装。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash] @="Open Cygwin Here" [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command] @="C:\\cygwin\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe" 

从cygwinterminal运行这个命令:

echo "cd your_path" >> ~/.bashrc

打开一个新的bash会话时运行.bashrc脚本。 上面的代码在打开一个新的cygwin会话时会更改为your_path目录。

对于cygwin64或没有chere的安装,你可以在registry项中使用下面的命令(假设你的path为windows,假设cygwin的安装目录是c:\ cygwin64)

 C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd "`cygpath "%V"`"; bash' 

在Windows 7和8registry文件可在这里下载: http : //tomkay.me/blog/Cygwin64—Open-Here-18

 Windows Registry Editor Version 5.00 ; Open cygwin to folder ; http://tomkay.me - Tom Kay [HKEY_CLASSES_ROOT\Folder\shell\open_cygwin] @="Open Cygwin Here" [HKEY_CLASSES_ROOT\Folder\shell\open_cygwin\command] @="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'" [HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin] @="Open Cygwin Here" [HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin\command] @="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'" 

如果你想把这个目录作为你的默认目录,只需要在~/.profile文件中添加一条cd语句即可。

我倾向于使用该方法来设置我的通常的目录,并为我的常见情况定义别名:

 alias tom="cd /users/tom" 

或者你的等价物。 这让我可以非常快地改变目录。

正如two7s_clash所说,你首先需要安装chere软件包并设置mintty:

  1. 以pipe理员身份打开Cygwinterminal
  2. apt-cyg install chere
  3. chere -i -t mintty

您现在可以在Windows资源pipe理器(上下文菜单)中右键单击打开特定目录中的cygwin,然后select“Bash Prompt Here”。

您也可以使用Windows命令提示符从特定目录打开cygwin:

  1. 打开Windows命令提示符
  2. 导航( cd )到自定义目录
  3. 执行C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    这个命令将从命令提示符处打开当前目录打开cygwin。

FreeCommander

这个命令也可以用来像FreeCommander一样从自定义文件pipe理器打开Cygwin。

要从FreeCommander中获取当前目录打开Cygwin,请执行以下操作:

  1. 工具 – >collections夹工具 – >collections夹工具编辑…(Ctrl + Shift + Y)
  2. 添加一个新的工具栏(+图标),快捷方式:插入

    • 名称:cygwin
    • 程序或文件夹: C:\cygwin64\bin\mintty.exe
    • 开始文件夹: %ActivDir%
    • 参数: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

您可以添加自定义快捷方式从FreeCommander打开Cygwin:

  1. 工具 – >定义键盘快捷键
  2. 向下滚动到“Favorite tool 01”(或“Favorite tool N”)
  3. 分配新的快捷键:我使用Ctrl + Shift + T

很好的参考: MinTTY Wiki,文章提示:从一个特定的目录开始

我使用和图标启动我的cygwin没有chere包。

  1. 在我的桌面上为cygwinterminal创build一个快捷方式。
  2. R-点击图标并select属性。
  3. 在快捷方式选项卡上,将其用于目标: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. 对于START IN,将目录/文件夹的path放到要启动cygwin的位置。 即C:\some\dir\name\here

我使用下面的代码行来在Win7的当前目录中启动zsh。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash] @="Open Cygwin Here" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command] @="\"C:\\Programmieren\\cygwin64\\bin\\mintty.exe\" -i /Cygwin-Terminal.ico /bin/zsh --login -c 'cd \"%V\";zsh'" 

请注意,我使用%V而不是%L或%1(因为两者都不适用于我)

以pipe理员身份打开Cygwinterminal

在powershell(使用巧克力):

 choco install cyg-get 

在cygwin中将安装右键菜单

 cyg-get install chere chere -i 

现在你可以右键点击并在任何文件夹中使用“Bash Prompt Here”。

在使用registry的答案中,我发现在Windows 2008 R2 SP1上,您需要将背景放在path之外。 此外,因为chere和xhere不是cygwin64的一部分,所以这里有一个适用于这两者的解决scheme,结合registry和Send To解决scheme。 用你的安装位置replace'E:\ cygwin64':

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ cygwin_bash] @ =“在这里打开Cygwin”

[HKEY_CLASSES_ROOT \ Directory \ shell \ cygwin_bash \ command] @ =“E:\ cygwin64 \ bin \ mintty.exe -i /Cygwin-Terminal.ico –exec /bin/bash.exe –login -c \”cd' %1'; exec bash -rcfile〜/ .bashrc \“”

这是在Windows 8.1中唯一适用于我的Cygwin64registry解决scheme:

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\mintty] @="Mintty from Here" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\Directory\shell\mintty\command] @="C:\\cygwin64\\bin\\mintty.exe -h always -e /usr/bin/ash -c 'cd \"$(/usr/bin/cygpath \"%L\")\"; exec /usr/bin/bash '" 

确保你需要修改你的'C:\ cygwin64'path。

我已经做了一个registry编辑脚本来打开Cygwin的任何文件夹,你右键单击。 它在我的GitHub上。

这是我的GitHub

我已经创build了batch file,并把它放到Cygwin的/ bin目录中。 这个脚本的开发是为了允许在Cygwin中安装/卸载用于打开选定文件夹和驱动器的registry项。 有关详细信息,请参阅http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html链接。;

更新:这个解决scheme和早期的build议一样,但是Windowsregistry的所有操作都隐藏在脚本中。

执行命令进行安装

 cyghere.bat /install 

执行命令来卸载

 cyghere.bat /uninstall 

findCygwin.bat文件并制作这样的内容:

 @echo off set newpath=%cd:\=/% pushd "%~dp0" chdir bin bash --login -i -c "cd \"%newpath%\"; exec bash" 

将path添加到cygwin.bat到环境path。

现在在任何文件夹,你可以input地址栏:

 cygwin 

你也可以在cmd.exe中input

您可以通过添加Icon字段设置到您的Cygwin.ico文件的path将Icon添加到shell。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash] @="Cygwin" "Icon"="\"C:\\cygwin64\\Cygwin.ico\"" [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command] @="C:\\cygwin64\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe" 

在我的Windows机器上,它没有采取:

chere -i-t mintty

因为薄荷壳是不可用的,但是你可能有其他各种各样的壳的select,比如ash bash cmd dash mksh pdksh posh tcsh zsh passwd。

所以我用:

chere -i -s bash

创build一个bash文件,说move.sh其中有以下代码C:\cygwin64\bin\run.exe -p /bin bash runFile.sh这启动Cygwin并执行Cygwin的bin目录中的runFile.sh目前假设你想要导航到一个特定的目录说E:\code然后runFile.sh有以下代码cd E: cd code

当需要全新安装时,我创build一个名为HOME的Windows“用户环境variables”,并为其指定“我的文档”所在的path。

cygwin安装程序检测到HOMEvariables,自动将其转换为一个cygpath,并select它作为我的目录。

这对我在过去5年中专业使用的每个工作站(大约3或4,Win7)都有效。 我一直是这些机器上唯一的用户,不能说是什么效果。

 @echo off C: SET mypath=%~dp0 c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i" 

将上述命令复制到一个文本文件中,并将其保存为.bat文件中的任意一个。 它应该打开“感兴趣的文件夹”中的cygwin。

基于@LindseyD答案我创build了一个简单的BAT文件,它打开当前目录中的cygwin,它可能是有用的(对我来说)。 假设你在PATH中有cygwin的bin目录。

 FOR /F %%x IN ('sh -c pwd') DO bash -l -i -c 'cd %%x; exec bash' 

我也有问题,曾经“窃取”我的cygwin命令 – 所以我需要运行
C:\cygwin\bin\mintty.exe -
但在安装chere并执行chere -i -t mintty -f作为pipe理员(参见上文)后,您可以简单地使用:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
我将它作为自定义button添加到Total Commander中(右键单击面板>添加…),效果非常好。

我不知道为什么我要浪费那么多时间,但是这对我赢得10,64比特是有用的:

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash] @="Open Cygwin Here" [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command] @="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\"" 

可能是最简单的一个:

1)创build文件foo.reg

2)插入内容:

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty] @="open mintty" [HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty\command] @="cmd /C mintty" 

3)执行foo.reg

现在只需右键单击任意文件夹,单击open mintty ,它将在该文件夹中产生mintty。

最好做如下:

 HKEY_CLASSES_ROOT\Directory\shell\BashHere Enter Data: Bash Here HKEY_CLASSES_ROOT\Directory\shell\BashHere\command Enter Data: cmd.exe /c C:\cygwin\bin\bash.exe --login -c "cd '%1'; exec /bin/bash"