我在Windows 7机器上使用带有Cygwin 64bit的ConEmu 64位。
我不想在我的.bashrc中设置cygwin的工作目录,因为我喜欢用不同的路径参数为Cygwin设置多个任务。
我在任务参数中设置了“主目录”:
\dir "D:\Downloads\Programming\Selenium\"
并在命令窗口中添加了这一行:
C:\cygwin64\Cygwin.bat --login -i
尽管如此,Cygwin并没有在给定目录的“cygwinized”版本(/ cygdrive / d / Downloads / Programming / Selenium)中启动,而是在我的用户的“普通”主目录(〜)中启动。
我只找到了如何在bashrc中添加新路径的方法。也许你们其中一个人可以启发我。
答案 0 :(得分:5)
首先,你看看C:\ cygwin64 \ Cygwin.bat的内容吗?为什么不呢?
@echo off
C:
chdir C:\cygwin64\bin
bash --login -i
显然,Cygwin.bat
永远不会在你想要的目录中打开bash。
此外,Cygwin忽略用户定义的启动目录!这是因为cygwin始终从cd "${HOME}"
脚本执行/etc/profile
。
但是,例如,来自msysgit的bash正常工作。
<强>解决方案强>
但是,/etc/profile
脚本会在CHERE_INVOKING
之前检查CD
环境变量。因此,启动cygwin的正确命令行将是:
set CHERE_INVOKING=1 & c:\cygwin64\bin\sh.exe --login -i
您可以在项目wiki page中找到的其他解决方法。
答案 1 :(得分:0)
我有类似的需求(通过上下文菜单在资源管理器中当前查看的文件夹中打开一个新的Cygwin-Tab)并找到以下解决方案:
如Maximus所述,Cygwin-Bash通常由C:\ cygwin64 \ Cygwin.bat打开,其中包括登录过程。我的方法是通过登录来更改工作目录。
<强> 的.bash_profile: 强>
if [ -f "${HOME}/startup.sh" ] ; then
source "${HOME}/startup.sh"
fi
<强> startup.sh 强>
cdc "D:\Downloads\Programming\Selenium\"
#cdc is a custom function, see .bashrc
的 的.bashrc 强>
cdc()
{
# converts a double-quoted windows-path and changes directory to it
p=$(cygpath -u "$1")
cd "$p"
}
登录进度因此将您的bash路径更改为您在startup.sh中设置的路径。您当然可以在startup.sh中键入与Cygwin兼容的路径,而无需使用.bashrc的自定义函数。它仍然非常有用,特别是如果你想要使用动态startup.sh。
更多动态方法:
使用以下内容在C:\ opt \ ConEmu \ ConEmu中创建一个Cygwin.bat:
<强> Cygwin.bat 强>
@echo off
C:
echo cdc %1 > C:\opt\cygwin64\home\%USERNAME%\startup.sh
:: Your ConEmu-Task-definition here
C:\opt\ConEmu\ConEmu64.exe /Single /cmd {Cygwin}
这个写一个cdc命令后跟你提供给startup.sh的路径,并启动一个新的ConEmu-Task Cygwin 实例。除了在我的配置中启动Cygwin实例之外,任务本身没有做任何事情:
ConEmu任务{Cygwin}
"C:\opt\cygwin64\Cygwin.bat"
我通过资源管理器的上下文菜单调用Cygwin.bat。另一种方法是将Windows快捷方式指向Cygwin.bat并附加路径。