使用不同的起始目录为ConEmu配置Cygwin

时间:2014-02-27 23:58:23

标签: windows path cygwin 64-bit conemu

我在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中添加新路径的方法。也许你们其中一个人可以启发我。

2 个答案:

答案 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并附加路径。