Alias
覆蓋依賴於發行版的 Bash 別名以有所不同
在 Ubuntu 16.04 中,我將以下程式碼添加到
/etc/bash.bashrc
:alias ll="ls -la --group-directories-first"
然後我重新啟動。
注意:我之所以使用
/etc/bash.bashrc
,是因為我需要一個文件中的所有別名,並且所有使用者都可以使用。我的意圖是重寫“本機”
ll
別名。然而它並沒有改變;如果我轉到任何包含目錄和文件的目錄並執行ll
,我會得到一個列表**,而**目錄沒有在文件上方排序。換句話說。我做錯什麼了?
ll
別名在 default 中定義.bashrc
。別名定義是一個命令。Bash 是一種命令式語言,它一個接一個地執行命令。如果同一個別名有多個定義,則每次 shell 執行其中一個定義時都會重新定義別名。因此,最後一個定義獲勝。
/etc/bash.bashrc
當 bash 啟動時,它會先於使用者文件讀取系統文件~/.bashrc
。因此,in 中的定義~/.bashrc
會覆蓋 中相同別名的任何定義/etc/bash.bashrc
。你不能(理智地)做任何事情/etc/bash.bashrc
來防止重新定義~/.bashrc
.對使用者強加便利別名是沒有意義的。這就是為什麼
ll
定義在~/.bashrc
而不是在/etc/bash.bashrc
. 因此,不要將您的首選定義放在系統文件中,而是將其放在您的使用者文件中。您可以更改預設值
.bashrc
——即/etc/skel/.bashrc
. 創建使用者帳戶時,此文件將復製到使用者的主目錄。更改文件/etc/skel
對現有帳戶沒有影響。但即使這樣也不是一個好主意,因為您定義的是個人偏好。