什麼會覆寫 /etc/profile.d 中的檔案所建立的別名? (環境變數)

什麼會覆寫 /etc/profile.d 中的檔案所建立的別名? (環境變數)

我執行以下命令在 CentOS 7.9 中建立別名檔案:

echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh

然後,一旦我重新啟動 shell,「type ll」表示該別名不起作用。我認為這可能是由於 /etc/profile.d 中的另一個檔案覆蓋了別名,因此我將該檔案重新命名為「z-alias-ll.sh」。然後我重新啟動 shell,這一次,「type ll」表明別名已成功工作。

然而,當我在 Ubuntu 20.04 中執行相同操作時,「type ll」表示它不起作用。 Ubuntu 中的 /etc/profile.d 中有一些檔案名,例如“Z99-cloud-locale-test.sh”和“Z99-cloudinit-warnings.sh”,所以我嘗試了這些:

echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99Zalias-ll.sh

然而,當我重新啟動終端時,「type ll」仍然顯示「ll 的別名為『ls -alF』」。

如果我建立另一個別名檔案:

echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh

然後,在我重新啟動終端機後,「type lltest」表示正在取得該檔案。因此,我認為 /etc/profile.d 中的別名檔案正在被獲取,但「ll」的別名正在被覆蓋。

由於我嘗試使用“ZZ99”等前綴。從優先。然而,我並不能100%確定。

哪些檔案、腳本等可能優先於我在 /etc/profile.d 中建立的別名檔案?在定義環境變數方面,Ubuntu 中什麼優先於 /etc/profile.d?

我使用新的 Digital Ocean Droplet 嘗試了 Ubuntu 20.04 和 Ubuntu 22.10。

答案1

通常,使用者設定優先於系統範圍設定。這對於別名也有效。使用者定義的別名優先於系統層級定義的別名。預設情況下,在 Ubuntu 上,alias ll='ls -alF'在使用者.bashrc檔案中定義,從而覆蓋您可能在其他地方設定的任何別名。

相關內容