在特定文件夹中打开Cygwin

时间:2012-03-09 16:32:12

标签: windows cygwin

如何创建一个Cygwin快捷方式,在特定文件夹中打开Cygwin?这样就不必输入

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

每次我启动Cygwin。

29 个答案:

答案 0 :(得分:377)

当您安装Cygwin时(或者如果您已经安装了Cygwin,再次下载并再次开始安装以运行更新),请确保选择“Shells”类别下的chere包。 / p>

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

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

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

答案 1 :(得分:92)

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

转到“发送至”文件夹:

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

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

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

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

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

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

注意:上面的cygpath -w .部分包含在后面的标记中。

现在只需在bash提示符下键入winx,然后会弹出一个Win Explorer。

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

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

答案 2 :(得分:30)

从cygwin终端运行以下命令:

echo "cd your_path" >> ~/.bashrc

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

答案 3 :(得分:28)

我创建了一个.reg文件,在右键单击上下文菜单中放置“Open 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"

答案 4 :(得分:17)

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

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

适用于Windows 7和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'"

答案 5 :(得分:12)

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

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

alias tom="cd /users/tom"

或您的同等人物。这让我可以非常快速地更改目录。

答案 6 :(得分:8)

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

  1. 以管理员身份打开Cygwin终端
  2. apt-cyg install chere
  3. chere -i -t mintty
  4. 现在,您可以在Windows资源管理器(上下文菜单)中单击鼠标右键打开特定目录中的cygwin,然后选择&#34; Bash Prompt Here&#34;。

    您也可以使用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,当前目录取自命令提示符。

    4. FreeCommander

      此命令也可用于从自定义文件管理器打开cygwin,如FreeCommander。

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

      1. 工具 - &gt;最喜欢的工具 - &gt;最喜欢的工具编辑...(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
      3. 您可以添加自定义快捷方式以从FreeCommander打开cygwin:

        1. 工具 - &gt;定义键盘快捷键
        2. 向下滚动到&#34;收藏工具01&#34; (或&#34;收藏夹工具N&#34;)
        3. 指定新的快捷键:我使用 Ctrl + Shift + T
        4. 很好的参考:jersey client is thread safe

答案 7 :(得分:8)

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

  1. 在桌面上为cygwin终端创建快捷方式。
  2. 右键单击图标并选择属性。
  3. 在快捷方式选项卡上,将其用于TARGET: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. 对于START IN,将dir /文件夹的路径放在所需的位置 发起cygwin。即C:\some\dir\name\here

答案 8 :(得分:5)

要创建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'
    
  • 单击“下一步”。

  • 输入所需的快捷方式名称,然后单击“完成”。

可以在桌面上放置多个快捷方式,以打开经常访问的目录中的Cygwin终端。

How to open a Cygwin shell at a specific directory from Netbeans?superuser.com上发布的解决方案的启发。

答案 9 :(得分:4)

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

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

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

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

cygwin

您也可以在cmd.exe

中键入它

答案 10 :(得分:3)

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

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

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

答案 11 :(得分:3)

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

答案 12 :(得分:3)

我已经制作了一个注册表编辑脚本,可以在右键单击的任何文件夹中打开Cygwin。它在我的GitHub上。

Here's my 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\""

答案 13 :(得分:2)

以管理员身份打开Cygwin终端

在powershell中(使用chocolatey):

choco install cyg-get

在cygwin中 将安装右键菜单

cyg-get install chere
chere -i

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

答案 14 :(得分:1)

您只需打开cygwin终端并输入:cd,然后拖动n放下您要结束输入的文件夹即可!

答案 15 :(得分:1)

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

chere -i -t mintty

因为没有薄荷壳,但你可以选择各种其他的外壳,比如灰烬cmd dash mksh pdksh posh tcsh zsh passwd。

所以我用过:

chere -i -s bash

答案 16 :(得分:1)

在使用注册表的答案中,我发现在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\""

答案 17 :(得分:0)

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

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

使用“ .bashrc”代替“ .bash_profile”配置。由于exec bash。对交互式非登录外壳执行.bashrc。参见: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'"

答案 18 :(得分:0)

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

这利用了以下事实:如果我位于目录C:\\Cool上并调用命令C:\\Cygwin\\bin\\mintty.exe,则mintty将在当前目录(即{{1})上自动打开}。

首先,您需要创建具有以下内容的文件C:\\Cool

C:\\Cygwin\\silent_run.vbs

接下来,要安装此答案,您将使用Windows注册表文件。为此,只需将以下文件的内容放入名为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

的文件中
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" )固定到安装Cygwin的实际位置。

然后,只需打开文件C:\\Cygwin以安装新的注册表项即可。

文件C:\\Cygwin\\AddMinttyToContextMenu.reg的工作方式如下:首先打开一个C:\\Cygwin\\AddMinttyToContextMenu.reg,切换到您所在的目录,然后调用cmd.exe以使用以下命令打开C:\\Cygwin\\silent_run.vbs终端行选项C:\\Cygwin\\bin\\mintty.exe,即最大程度地打开它。

打开-w max终端需要脚本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使其开箱即用。

参考文献:

  1. How add context menu item to Windows Explorer for folders
  2. VBScript pass commandline argument in paths with spaces
  3. How to pass a command with spaces and quotes as a single parameter to CScript?
  4. calling vbscript from another vbscript file passing arguments
  5. https://ss64.com/vb/syntax-args.html
  6. Check if string contains space
  7. Running command line silently with VbScript and getting output?
  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
  10. How to run Batch script received as argument on VBscript?
  11. Can I pass an argument to a VBScript (vbs file launched with cscript)?

答案 19 :(得分:0)

创建一个bash文件,说$pdo = DB::connection()->getPdo(); $pdo->exec("CREATE TABLE tmp_products (id INT NOT NULL, alias VARCHAR(255) NOT NULL, include VARCHAR(255) NULL, exclude VARCHAR(255) NULL, PRIMARY KEY (id));"); ,其中包含以下代码 move.sh 这将启动Cygwin并执行Cygwin的bin目录中的C:\cygwin64\bin\run.exe -p /bin bash runFile.sh 假设您要导航到特定目录,请说runFile.sh 然后runFile.sh具有以下代码E:\code

答案 20 :(得分:0)

您可以通过在Icon文件的路径中添加Cygwin.ico字段来将图标添加到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"

答案 21 :(得分:0)

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

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

执行命令安装

cyghere.bat /install

执行卸载命令

cyghere.bat /uninstall

答案 22 :(得分:0)

这是在Windows 8.1中唯一适用于我的Cygwin64注册表解决方案:

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

答案 23 :(得分:-1)

可能是最简单的一个:

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,它将在该文件夹中生成薄荷。

答案 24 :(得分:-1)

我不知道为什么我要浪费这么多时间,但这对我来说对胜利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\""

答案 25 :(得分:-1)

我还有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中将其添加为自定义按钮(右键单击面板&gt;添加...)并且它的效果非常好。

答案 26 :(得分:-1)

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

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

答案 27 :(得分:-1)

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

将上述命令复制到文本文件中,并将其另存为“您感兴趣的文件夹”中的.bat。 它应该在“你感兴趣的文件夹”中打开cygwin。

答案 28 :(得分:-2)

最好这样做:

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"