在特定文件夹中打开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:
- 以pipe理员身份打开Cygwinterminal
-
apt-cyg install chere
-
chere -i -t mintty
您现在可以在Windows资源pipe理器(上下文菜单)中右键单击打开特定目录中的cygwin,然后select“Bash Prompt Here”。
您也可以使用Windows命令提示符从特定目录打开cygwin:
- 打开Windows命令提示符
- 导航(
cd
)到自定义目录 -
执行
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,请执行以下操作:
- 工具 – >collections夹工具 – >collections夹工具编辑…(Ctrl + Shift + Y)
-
添加一个新的工具栏(+图标),快捷方式:插入
- 名称:cygwin
- 程序或文件夹:
C:\cygwin64\bin\mintty.exe
- 开始文件夹:
%ActivDir%
- 参数:
C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l
您可以添加自定义快捷方式从FreeCommander打开Cygwin:
- 工具 – >定义键盘快捷键
- 向下滚动到“Favorite tool 01”(或“Favorite tool N”)
- 分配新的快捷键:我使用Ctrl + Shift + T
很好的参考: MinTTY Wiki,文章提示:从一个特定的目录开始
我使用和图标启动我的cygwin没有chere
包。
- 在我的桌面上为cygwinterminal创build一个快捷方式。
- R-点击图标并select属性。
- 在快捷方式选项卡上,将其用于目标:
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
- 对于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安装程序检测到HOME
variables,自动将其转换为一个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"