編輯

編輯

我見過但這對我不起作用。我沒有使用 Git 版本的 bash,而是使用 cygwin 附帶的版本,因此這可能是問題的一部分。以下是我在 Console2 中設定選項卡的方式:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%

這是我的註冊表項:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%1"

bash 總是在我的主目錄而不是我單擊的目錄中啟動,然後我必須cd /cygdrive/d/code...等等。但沒有運氣。

我也嘗試過這個解決方案但它對我也不起作用:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l

註冊表:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%V"

上述解決方案適用於 Git 隨附的 bash.exe 和 sh.exe 版本,但由於某些原因不適用於 cygwin 隨附的版本。還在尋找這個原因。

編輯

我在下面選擇了一個答案,但我認為如果我在正確的資料夾中建立了 .profile 文件,上面的第二個解決方案就會起作用。我一直嘗試在我的普通主目錄而不是 cygwin 使用的主目錄中創建它,這就是它從未執行腳本的原因。這讓我相信 .profile 檔案是不必要的。我選擇的答案(感謝 Hugh!)清楚地解釋了 bash 如何使用每個腳本(.bash_profile、.bash_login、.profile 和 .bashrc),這幫助我發現我將它們放在了錯誤的位置。

答案1

來自手動的,

當 Bash 作為互動式登入 shell 或帶有 --login 選項的非互動式 shell 被呼叫時,它首先從檔案 /etc/profile 中讀取並執行命令(如果該檔案存在)。

/etc/profile預設包含以下程式碼:

# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
  unset CHERE_INVOKING
else
  cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi

因此,一種解決方案是建立 Windows 批次文件,CHERE_INVOKING在啟動 bash 之前設定環境變數。那不是很整潔。

下一個,

讀取該檔案後,它會按順序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,並從第一個存在且可讀的檔案中讀取並執行命令。

這些設定檔腳本預設執行您的~/.bashrc腳本(如果存在)。把我的作品放在cd -最後.bashrc(使用最新的 Console2 和 Cygwin bash):

echo 'cd -' >> ~/.bashrc

順便說一句,我調用 Console2 ( Console.exe) 時不帶任何參數 - Windows 資源管理器確保它在我右鍵單擊的目錄中啟動。我使用的是 XP,但我懷疑 MS 會在更高版本的 Windows 中更改此行為。我還將 Bash 選項卡的“啟動目錄”選項留空。

答案2

看來,您還沒有~/.profile使用以下內容創作:

cd -

https://superuser.com/a/387273/139371

相關內容