近期應實驗室的要求開始學習Unix相關的一些東西,第一階段當然是shell腳本了,看到$PS1變量的時候突然想起之前一直沒有解決的一個問題。
電腦是老爸幫買的,他拿到的第一件事就是注冊開機了,當然對于他來說用我的名字全拼當然是最合適不過的電腦命名方式了。可是對于我這種"高逼格"的青年來說,我肯定要用英文名啊,于是開始改名,之前一直未能解決這個問題,不懂Unix系統最后也就放棄了。
直到今天學習的時候echo 了下 PS1 這個變量,輸出結果如下:
"\h\W \u\$ "
這個字串表示mac終端在等待用戶輸入時顯示的前綴,\h主機名,\W當前的工作目錄,\u用戶名,\$美元符號。所以說按照網上的教程,要修改最前面的名字只需要在共享里面修改主機名就行了啊。
但是修改名字重啟終端后主機名仍然沒有發生變化,這就蛋疼了,完全不知道問題出在哪里。
感覺會不會是終端引用了某個shell變量,設置中修改后hostname沒有及時跟新到變量里導致的?于是set了一下。打出所有變量發現了一個叫HOSTNAME的變量,果然如此,次變量生成了個局域網的主機名,格式如下:
HOSTNAME.Bitman's\032Private\032Network
我的中二名字就用HOSTNAME代替了,Bitman是工作室的路由器名字,之后的兩串我也不太明白。可以發現,只是在共享中修改名字后,此變量是并沒有被及時跟新的,導致了此問題,所以網上才會出現有人跟新成功有人沒有。
解決方案是,設置好主機名后斷開網絡重新連接,打開網絡時系統會重新跟新該變量,hostname也就可以讀取到最新的設置了。為什么非要從這樣一個存在緩存問題的變量中來獲取主機名呢?希望apple在之后可以解決這個問題,不然出這個問題真的很沒有頭緒。