我遇到Cygwin
問題,具體到XTerm.exe
會話未正確加載BASH
配置文件。我可以在Cygwin中強制XTerm.exe的默認BASH Shell和其他非登錄shell來加載〜/ .bashrc嗎?
對於初學者來說,我.startxwinrc
是:
#!/bin/sh
xrdb -merge ~/.Xresources
xterm -geometry +0+60 -ls &
xterm -geometry +0-100 &
exec xclock
...和我的.Xresources是:
Xft*antialias: true
Xft*autohint: true
XTerm*background: white
XTerm*foreground: black
XTerm*cursorColor: orchid
XTerm*fullCursor: true
XTerm*reverseVideo: false
XTerm*geometry: 80x40
XTerm*scrollBar: true
XTerm*rightScrollBar: true
XTerm*scrollTtyOutput: off
XTerm*scrollKey: on
XTerm*reverseWrap: true
XTerm*saveLines: 10000
XTerm*faceName: BitStream Vera Sans Mono
XTerm*faceSize: 12
XTerm*toolBar: off
XTerm*VT100.Translations: #override\n\
<Key>BackSpace: string(0x7F)\n\
<Key>Delete: string("\033[3~")\n\
<Key>Home: string("\033[1~")\n\
<Key>End: string("\033[4~")\n\
<KeyPress>Prior : scroll-back(1,page)\n\
<KeyPress>Next : scroll-forw(1,page)
我開始我的X服務器:
startxwin &
我看到上面的配置工作...我得到兩個XTerm
窗口和一個xclock
(一個d的顏色和滾動等按我的規格)。
但奇怪的是終端提示不是我在我的~/.bashrc
配置文件中設置的。
起初我還以爲我的問題涉及到這些問題:
Why is my .bashrc not read under cygwin?
Cygwin shell doesn't execute .bashrc
...這表明問題是,實際的配置設置從~/.profile
或~/.bash_profile
,或許加載。但添加這些沒有做任何事。
爲了驗證他們不跑我加入這樣一行到三個bash的配置文件(.bashrc
,.bash_profile
,並.profile
)在我的主目錄:
echo "**** EXECUTING /home/JasonMick/.bash_profile *****" | \
tee -a /tmp/shell.log
的文件不會被寫入......很清楚這些文件從未被觸及。
接下來,我驗證了我的Windows環境變量中沒有「HOME」變量(有些人建議可能是此類問題的根源)。沒有這樣的變數,所以我在這方面沒問題。
接下來,檢查一些基本的東西有關使用殼狀態...
printf '%s\n' $SHELL $HOME $USER
結果得到xterm的是:
/斌/慶典
/家庭/ JasonMick
JasonMick
這些結果與相同命令ex在非X11
終端mintty
(我通常用它來啓動startxwin
)執行。但是,當我打開新的mintty
提示是正確的,根據我的主目錄.bashrc
文件中的設置。
爲了安全起見,我在/etc/
中搜索了.profile
,.bashrc
和.bash_profile
文件。我發現以下文件:
/etc/profile
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bash_profile
/etc/defaults/etc/skel/.bashrc
/etc/defaults/etc/skel/.bash_profile
/etc/defaults/etc/bash.bashrc
/etc/defaults/etc/profile
我向所有人添加了打印件。
在mintty我的/etc/shell.log文件得到以下命令:
****執行/ etc/profile文件****
****執行/等/慶典.bashrc中*****
**** EXECUTING /home/JasonMick/.bash_profile *****
...所以它似乎是在提醒/etc/
文件,最後調用.bash_profile
在我的主目錄中,自動地,沒有任何來自的源調用0位於配置文件。
刪除日誌,我啓動startxwin。 Xterm打開,但日誌文件不在那裏!
這意味着XTerm沒有觸及任何配置文件..不在/etc/
不在${HOME}
!
我發現的唯一的區別是調用mintty
echo $0 $-
當我得到:
-bash himBH
...這裏爲的XTerm我得到:
bash himBH
據當時資料:
Difference between Login Shell and Non-Login Shell?
Why 'echo $0' gives different result for two different terminals?
xterm中我的bash shell是一個互動(在$-
我標誌)非登錄(無- 在$0
前 )BASH
外殼,而我的mintty
是iteractive,登錄BASH
外殼。
好的。基於上面的第二個鏈接,我仍然期望我的非登錄交互式炮彈來加載我的〜/ .bashrc。但是,如上所述,它不僅不加載該文件...他們沒有加載任何bash配置文件,據我所知。沒有在${HOME}
...沒有在/etc/
。
任何想法如何強制非登錄貝殼Cygwin中(即XTerm
默認的shell會話)正確源~/.bashrc
或~/.bash_profile
?
我做錯了什麼?
我感謝您的幫助,但希望對編輯提出一些建設性的批評以回答此問題。我覺得'$ {HOME}'上的文本有些無關緊要,因爲我明確表明它在正在討論的**非登錄** shell中正確設置,並且我進一步聲明它並未設置在我的Windows環境變量中。因此,您提出的問題雖然真實,但我已經在問題文字中提到並澄清,但不適用於我的部署。 –