2014-02-27 45 views
4

我在Windows 7機器上使用Cygwin 64bit的ConEmu 64bit。配置Cygwin for ConEmu與不同的起始目錄

我不想在我的.bashrc中設置cygwin的工作目錄,因爲我喜歡用不同的路徑參數爲Cygwin設置多個任務。

我設立在任務參數中的「主目錄」:

\dir "D:\Downloads\Programming\Selenium\" 

,並加入這一行的命令窗口:

C:\cygwin64\Cygwin.bat --login -i 

然而Cygwin並沒有在「cygwinized」啓動給定目錄的版本(/ cygdrive/d/Downloads/Programming/Selenium),但在我的用戶的「普通」主目錄(〜)中。

我只發現瞭如何在bashrc中添加一個新路徑。也許你們中的一個人可以啓發我。

回答

5

首先,你看看你的C:\ cygwin64 \ Cygwin.bat的內容嗎?爲什麼不?

@echo off 
C: 
chdir C:\cygwin64\bin 
bash --login -i 

很明顯,Cygwin.bat將永遠不會在您所需的目錄中打開bash。


此外,Cygwin忽略用戶定義的啓動目錄!這是因爲cygwin總是從/etc/profile腳本執行cd "${HOME}"

但是,例如,從msysgit bash工作正常。


解決方案

然而,/etc/profile腳本檢查CHERE_INVOKING環境變量CD之前做的事情。因此,啓動cygwin的正確的命令行是:

set CHERE_INVOKING=1 & c:\cygwin64\bin\sh.exe --login -i 

另一種變通方法,您可以在項目wiki page找到。

+0

我不認爲它是bash的bug。如果使用參數「-l」或「--login」執行bash,它將作爲**登錄shell **執行。這意味着它處理「配置文件」文件並將工作目錄更改爲「/ etc/passwd」中定義的用戶主目錄。 如果您執行的bash沒有參數「-l」或「--login」,它在正常模式下執行,不會處理「配置文件」文件並保留當前工作目錄。 這與在Linux中的工作原理完全相同。 –

+0

已添加適當的解決方案和說明 – Maximus

0

我也有類似的需求(通過上下文菜單在資源管理器當前查看的文件夾中打開一個新的Cygwin-Tab鍵),並發現了以下解決方案:

正如鮃指出在Cygwin-擊通常由開C:\ cygwin64 \ Cygwin.bat其中包括登錄過程。我的方法是通過登錄來更改工作目錄。

的.bash_profile:

if [ -f "${HOME}/startup.sh" ] ; then 
    source "${HOME}/startup.sh" 
fi 


啓動。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" 
} 

你來砸你已經在startup.sh設置一個登錄進度從而改變路徑。您當然可以在startup.sh中鍵入一個Cygwin兼容的路徑,而無需使用.bashrc的自定義函數。它仍然非常有用,特別是如果你想要使用動態的startup.sh。


更加動態的方法:

在C上創建一個Cygwin.bat:\選擇\ ConEmu \ ConEmu具有以下內容:

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任務Cygwin的實例。任務本身並不做任何事情,但在我的配置開始Cygwin的實例:

ConEmu任務{}的Cygwin

"C:\opt\cygwin64\Cygwin.bat" 



我通過上下文祈求的的Cygwin.bat探險家的菜單。另一種方法是將Windows快捷方式指向Cygwin.bat並添加路徑。