Alias

覆蓋依賴於發行版的 Bash 別名以有所不同

  • September 22, 2018

在 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對現有帳戶沒有影響。但即使這樣也不是一個好主意,因為您定義的是個人偏好。

引用自:https://unix.stackexchange.com/questions/385009