由於Mac系統默認的**的MacBook Pro
這個名稱過於冗長且不美觀,於是我便搜索尋找辦法修改主機名稱,對於我這種有強迫症的人來說還是很有必要的,特此記錄。
在/etc/bashrc
文件中,找到了 PS1 系統變量的存在:
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
if
與fi
是bash腳本的if語句-z "$PS1"
這句代碼是查看PS1這個變量是否存在,若存在,return返回-z
是一個單目操作符,代表對變量為空不為空的判斷,語法如下:-z $A:為空則為真,不空則為假
只要在.bashrc 或者.bash_profile 文件中,定義了 PS1 變量,就不會再執行下面的邏輯了。
在我的文件里,沒有定義,那么這個名稱是怎么形成的呢?
它其實執行了下面這行邏輯:
PS1='\h:\W \u\$ '
bash 腳本與眾不同,字符串里面可以放置變量。在這個字符串里,只有最后面的$
符號,還有中間的:
,是一個字符,其它的都是變量,都有特殊的含義。
\h
: 在這里是 hostname 的簡寫,代表僅取主機名稱中的第一個名字,主面名可以是兩段式,例如 liyi.macOS,那么這個小 h 就代表 liyi。\W
: 是工作目錄名稱的最后路徑中的一段,如果是\w
,則代表完整的工作目錄名稱。用戶目錄會以 ~代替。\u
: 代表是 username,是當前用戶的用戶名,這個名稱可以在系統設置里,使用另外一個管理員帳號修改它。
如果要保留這個格式,還有一個簡便的工具可以使用:scutil。
這個工具名疑是 Store Access Util 的簡稱。它提到了對 ComputerName, LocalHostName, HostName 系統變量的修改辦法。
sudo scutil --set HostName LIYI #修改主機名
sudo scutil --set LocalHostName LIYI #修改本地主機名
ComputerName 是計算機名稱,這個名稱在隔空傳送時是有用的,我們依靠它判斷傳遞對象。