2012-03-22 29 views
7

啓動cygwin外殼後,它只是定位錯誤的家目錄:Cygwin的殼不執行的.bashrc

[email protected] ~ 
$ pwd 
/cygdrive/c/Users/xfire 

但它曾經是的/ home/XFire軟件

[email protected] /etc 
$ cat passwd | grep xfire 
xfire:unused:22773:10513:U-CORP\xfire,S-1-5-21-527237240-725345543-682003330-12773:/home/xfire:/bin/bash 

而且/ home/xfire中的.bashrc沒有執行,即使我將它複製到/ cygdrive/c/Users/xfire,它也不起作用!

+0

檢查了這一點:http://www.cygwin.com/ml/cygwin/2002-01/msg00826.html – jahroy 2012-03-22 03:42:50

+0

某些程序在Windows註冊表中添加一個「HOME」環境,並將值設置爲「C:\ Users \ xfire「,這就是爲什麼cygwin將該目錄作爲家庭的原因。 http://cygwin.com/faq-nochunks.html – 2012-03-22 06:24:13

+0

無用的貓:'grep xfire passwd'。 – Jens 2012-04-27 09:29:23

回答

6

某些程序在Windows註冊表中添加一個「HOME」環境,並將該值設置爲「C:\ Users \ xfire」,這就是爲什麼cygwin將該目錄作爲家庭的原因。 cygwin.com/faq-nochunks.html

+0

太糟糕了,這是你自己的答案,因此當你選擇它作爲正確的答案時不會碰到最高,因爲如果HOME變量沒有設置的話,那麼兩個頂級答案基本上是無用的。 – 2014-05-14 17:38:42

+0

嗯,這解釋了爲什麼會發生,但不是如何解決問題... – bgusach 2014-08-15 11:19:45

+0

我的意思是,我知道它的工作原理,如果我刪除它,但如果我仍然在Windows HOME? – bgusach 2014-08-15 11:27:44

31

在Cygwin,我加入這個我~/.bash_profile

. ~/.bashrc 
+3

這爲我解決了它。也許你可以弄清楚發生了什麼,爲什麼埃文斯想接受他的答案? – 2015-07-07 16:12:02

+1

對於其他人可能會好奇的原因。 cygwin默認的終端程序是mintty。如果您檢查用於啓動終端的圖標的屬性,則會發現它以單獨的「 - 」結尾。這告訴mintty將shell作爲登錄shell運行。如果shell是**不是**登錄shell,則Bash只執行.bashrc。對於登錄shell,它只執行.bash_profile(或.profile)。在許多其他unix中,終端程序將shell作爲非登錄shell啓動,因此它們默認執行.bashrc而不是.bash_profile。 – Aner 2017-09-29 15:45:08

1

您也還可以設置BASH_ENV變量,例如,BASH_ENV = 'C:\ DOCUME〜1 \ dwyttenb \ .bashrc' 中

3

在我的版本的cygwin的我發現,只有~/.profile正在execueted所以添加

if [ -e "${HOME}/.bash_profile" ]; then 
    source "${HOME}/.bash_profile" 
fi 

.profile文件。我的.bash_profile文件包含.bashrc的另一個測試,並從那裏執行該測試。我還將以下兩行添加到我的.bashrc文件中。

export BASH_ENV="${HOME}/.profile" 
export ENV="${HOME}/.profile" 

第一這些確保.profile得到在非交互式終端執行,並且所述第二可確保它被在POSIX終端執行的。我發現了一個非常有用的解釋,說明什麼時候運行,什麼時候在Bash Reference Manual

在你的情況下,它不會幫助,因爲你有一個問題,你的HOME環境變量的值,但是當搜索這個問題時,這個頁面在列表上很高。