如果 $HOME 包含空格,則不會在 WSL 上讀取 .bashrc
我最近:在 /etc/passwd 中為使用者指定了一個主目錄路徑,其中包含空格?但是現在
.bashrc
當我打開 Ubuntu 16.04 LTS WSL 視窗時,我的來源不正確,所以我必須source
手動進行…它適用於source ~/.bashrc
,但奇怪的是不適用於source $HOME/.bashrc
,但奇怪的是適用於source "$HOME"/.bashrc
.所以傑夫在上一個問題上認為,也許問題是其他東西在沒有引號的情況下採購它。
事實上,一個類似的問題導致我fork git hub 項目,其中發生了類似的錯誤;我認為這是因為我在 Windows 上使用了 mingw64 / git-bash,但這根本不是問題,因為現在它發生在 WSL 中……至少我認為是這樣……
奇怪地不適用於
source $HOME/.bashrc
這很正常:它不應該工作。
source "$HOME/.bashrc"
從您的主目錄中的文件執行指令.bashrc
,但source $HOME/.bashrc
採用 的路徑.bashrc
,將其拆分為空格,並從名稱為第一個空格的部分的文件中執行指令,並將其他部分用作位置參數(可"$@"
從程式碼中獲得中.bashrc
)。(假設 的值中沒有萬用字元HOME
。)通常沒有什麼會執行類似的命令
source ~/.bashrc
: bash 在啟動時已經這樣做了。一個可能的解釋是 WSL 視窗執行一個登錄 shell。當 bash 是登錄 shell 時,它不載入.bashrc
,而是載入.bash_profile
或.profile
代替。大多數人通過從.bashrc
..bash_profile
檢查你的.bash_profile
(或者如果你沒有你的.profile
,他們可能有錯誤的source $HOME/.bashrc
或. $HOME/.bashrc
代替正確的方法之一(source ~/.bashrc
或者如果你喜歡冗長source "$HOME/.bashrc"
,或者其中任何一個用.
代替source
)。