
我見過這但這對我不起作用。我沒有使用 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 選項卡的“啟動目錄”選項留空。