在特定的文件夹中打开Cygwin

如何创建在特定文件夹中打开Cygwin的Cygwin快捷方式?这样就不用打字了

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

每次我发射Cygwin。

149176 次浏览

如果你想将该目录作为默认目录,只需在你的~/.profile文件中添加cd语句。

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

alias tom="cd /users/tom"

或者类似的东西。这让我可以非常快速地更改目录。

我做了一个.reg文件,在右键单击上下文菜单中放入“打开Cygwin Here”选项。 它取决于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"

当你安装Cygwin时(或者如果你已经安装了Cygwin,请再次下载并重新开始安装以运行更新),确保你在“shell”类别下选择了chere包。

启动Cygwin后,打开Cygwin终端(作为管理员)并键入命令:chere -i -t mintty -s bash

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

mintty是Cygwin的默认终端。如果你不使用-t选项选择它,你的“Bash Prompt Here”将使用与Windows命令提示符相同的终端,这将防止水平调整大小。)

这是我用的。它不需要chere包或注册表修补。适用于Windows 7。

进入“发送到”文件夹:

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

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

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

在Windows资源管理器中,右键单击文件夹&选择Send To > Bash Here

这里有一个相反的技巧,在当前bash目录下打开Windows资源管理器。创建这个别名:

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

注意:上面的cygpath -w .部分用反引号括起来。

现在只要在bash提示符下输入winx, Win资源管理器就会弹出。

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

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

在使用注册表的答案中,我发现在Windows 2008 R2 SP1上,您需要将Background从路径中删除。此外,由于chere和xhere不是cygwin64的一部分,这里有一个同时适用于两者的解决方案,它结合了注册表和Send To解决方案。将'E:\cygwin64'替换为您的安装位置:

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here"


[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\""

这是唯一的Cygwin64注册表解决方案,为我工作在Windows 8.1:

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'路径。

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

这是我的GitHub

来自Github的64位机器的RegEdit示例代码:

REGEDIT4


[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere]
@="&Cygwin Bash Here"


[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere]
@="&Cygwin Bash Here"


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""
@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"
将上述命令复制到一个文本文件中,并将其保存为。bat在任何“您感兴趣的文件夹”中。 它应该在“您感兴趣的文件夹”中打开cygwin

我使用以下几行代码在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(因为两者都不适合我)

我已经创建了批处理文件,并将其放到Cygwin的/bin目录中。开发此脚本的目的是允许安装/卸载注册表项,以便在Cygwin中打开选定的文件夹和驱动器。详细信息请参见http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html链接。

更新:此解决方案与早期建议相同,但Windows注册表的所有操作都隐藏在脚本中。

执行安装命令

cyghere.bat /install

执行卸载命令

cyghere.bat /uninstall

对于cygwin64或没有chere的安装,您可以在注册表项中使用以下命令(假设windows由于您的路径,也假设cygwin安装目录为c:\cygwin64)

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

适用于Windows 7和Windows 8 注册表文件可在这里下载: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'"

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

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

我也有git的问题,它曾经“窃取”我的cygwin命令-所以我需要运行
C:\cygwin\bin\mintty.exe -
但是在安装chere并以管理员身份执行chere -i -t mintty -f之后(见上文),你可以简单地使用:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
我在Total Commander中添加了这个自定义按钮(右键单击面板> add…),它工作得非常好。< / p >

我使用和图标在没有chere包的情况下启动我的cygwin。

  1. 在我的桌面上为cygwin终端创建一个快捷方式。
  2. 右击图标并选择属性。
  3. 在快捷选项卡上,对TARGET使用这个: 李C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd' < / >
  4. 对于START IN,将目录/文件夹的路径放在你想要的位置 启动cygwin。李即C:\some\dir\name\here < / >

在cygwin终端运行如下命令:

echo "cd your_path" >> ~/.bashrc

在打开一个新的bash会话时运行.bashrc脚本。当你打开一个新的cygwin会话时,上面的代码会改变到your_path目录。

以管理员身份打开Cygwin终端

在powershell中(使用巧克力):

choco install cyg-get
在cygwin < p > 右键菜单

cyg-get install chere
chere -i

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

正如two7s_clash所说,你首先需要安装chere包和setup mintty:

  1. 以管理员身份打开Cygwin终端
  2. apt-cyg install chere
  3. chere -i -t mintty

现在你可以在Windows资源管理器(上下文菜单)中用鼠标右键在特定目录中打开cygwin,并选择“Bash Prompt Here”。

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

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

    该命令将打开cygwin,并从命令提示符中获取当前目录

FreeCommander

此命令还可以用于从自定义文件管理器(如freecommand)打开cygwin。

要打开从freecommand获取的当前目录的cygwin,请执行以下操作:

  1. 工具->收藏工具->收藏工具编辑…(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
    • 李< / ul > < / >

你可以添加自定义快捷方式从freecommand打开cygwin:

  1. 工具->定义键盘快捷键
  2. 向下滚动到“最喜欢的工具01”(或“最喜欢的工具N”)
  3. 分配新的快捷键:我使用Ctrl + 转变 + T

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

我不知道为什么我要浪费这么多时间,但这适用于我的win10, 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)创建文件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"

找到Cygwin.bat文件并制作如下内容:

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

将cygwin.bat的路径添加到环境path中。

现在在任何文件夹中,你都可以输入地址栏:

cygwin

你也可以在cmd.exe中输入

你可以通过在你的Cygwin.ico文件的路径中添加一个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电脑上,它没有显示:

这里有薄荷

因为薄荷shell是不可用的,但你可以选择各种其他shell,如ash bash cmd dash mksh pdksh posh tcsh zsh passwd。

所以我用:

Chere -i -s bash

创建一个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 < / > < / p >

当需要重新安装时,我创建了一个名为HOME的Windows“用户环境变量”,并将“我的文档”所在的路径分配给它。

cygwin安装程序检测HOME变量,自动将其转换为cygpath,并选择它作为我的~目录。

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

你可以打开cygwin终端,然后写:cd,然后拖放你想要的文件夹,然后进入!

要创建一个Windows快捷方式,在您自己选择的目录中启动Cygwin终端,请尝试以下操作:

  • 右键单击Windows桌面,选择“新建”,然后选择“快捷方式”。

  • 对于项目的位置,输入以下文本,根据需要更改mintty路径,并在指定的位置替换所需目录的名称。

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd DESIRED-DIRECTORY; exec bash'
    

    例如,OP将使用以下文本:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Click 'Next'.

  • Enter the desired name for the shortcut and click 'Finish'.

Multiple shortcuts can be placed on the desktop to open Cygwin terminals in various often-accessed directories.

Inspired by solution posted on How to open a Cygwin shell at a specific directory from Netbeans? at superuser.com.

最后一个答案是独立于Cygwin本身。

这使用的事实是,如果我在目录C:\\Cool上,并且我调用命令C:\\Cygwin\\bin\\mintty.exemintty将自动在当前目录上打开,即C:\\Cool

首先,你需要创建包含以下内容的文件C:\\Cygwin\\silent_run.vbs:

Function EnquoteString(argument)
EnquoteString = Chr(34) & argument & Chr(34)
End Function


arglist = ""
With WScript.Arguments
For Each arg In .Unnamed
' Wscript.Echo "Unnamed: " & arg
If InStr(arg, " ") > 0 Then
' arg contains a space
arglist = arglist & " " & EnquoteString(arg)
Else
arglist = arglist & " " & arg
End If
Next
End With


CreateObject("Wscript.Shell").Run Trim( arglist ), 0, False

接下来,要安装这个答案,您将使用一个Windows注册表文件。为此,只需将以下文件的内容放入名为C:\\Cygwin\\AddMinttyToContextMenu.reg的文件中

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020


[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here\Command]
@="\"C:\\Cygwin\\bin\\mintty.exe\" -w max"




[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020


[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here\Command]
@="cmd.exe /c cd /d \"%V\" && wscript \"C:\\Cygwin\\silent_run.vbs\" \"C:\\Cygwin\\bin\\mintty.exe\" -w max"

现在,修复所有硬编码路径,即C:\\Cygwin到Cygwin安装的实际位置。

然后,只需打开文件C:\\Cygwin\\AddMinttyToContextMenu.reg来安装新的注册表项,就完成了。

文件C:\\Cygwin\\AddMinttyToContextMenu.reg的工作原理是首先打开一个cmd.exe,切换到你所在的目录,然后调用C:\\Cygwin\\silent_run.vbs,用命令行选项-w max打开C:\\Cygwin\\bin\\mintty.exe终端,即最大限度地打开它。

需要脚本C:\\Cygwin\\silent_run.vbs来打开C:\\Cygwin\\bin\\mintty.exe终端,而不保留我们打开的第一个cmd.exe

C:\\Cygwin\\AddMinttyToContextMenu.reg的第一个条目不使用C:\\Cygwin\\silent_run.vbs,因为默认情况下,HKEY_CLASSES_ROOT\Directory\Background\shell键已经在当前目录中打开,然后,我们可以直接调用C:\\Cygwin\\bin\\mintty.exe来让它开箱工作。

引用:

  1. 如何为文件夹添加上下文菜单项到Windows资源管理器
  2. VBScript通过命令行参数,路径中有空格
  3. 如何通过一个命令与空格和引号作为一个参数的CScript?< / >
  4. 调用vbscript从另一个vbscript文件传递参数
  5. https://ss64.com/vb/syntax-args.html
  6. 检查字符串是否包含空格
  7. 用VbScript静默地运行命令行并得到输出?< / >
  8. http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
  9. https://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way < a href = " https://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way " > < / >
  10. 如何运行批量脚本收到的参数在VBscript?< / >
  11. 我可以传递一个参数到一个VBScript (vbs文件启动cscript)?< / >

将以下代码保存为文件:cygwin_bash.reg

这将同时添加在当前目录中打开Cygwin和在指定文件夹中打开Cygwin。

使用“.bashrc"而不是".bash_profile"配置。因为exec bash.bashrc用于交互式非登录shell。看:https://apple.stackexchange.com/questions/51036/what-is-the-difference-between-bash-profile-and-bashrc

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Directory\Background\shell\z_cygwin_bash]
@="Cygwin Here"
"Icon"="C:\\cygwin64\\Cygwin.ico"


[HKEY_CLASSES_ROOT\Directory\Background\shell\z_cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; exec bash'"


[HKEY_CLASSES_ROOT\Directory\shell\z_cygwin_bash]
@="Cygwin Here"
"Icon"="C:\\cygwin64\\Cygwin.ico"


[HKEY_CLASSES_ROOT\Directory\shell\z_cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; exec bash'"