Debian 10 上「別名」的全球使用

Debian 10 上「別名」的全球使用

我一直在嘗試在 Debian 10 實例上新增別名的全域使用,但沒有成功。

我已經嘗試過的是將我的別名添加到 /etc/bash.bashrc 以及將此程式碼段添加到 /etc/profile 以獲取它但它不起作用。

if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi

在我的 bash.bashrc 中:

#Aliases 
alias l='ls -la' 
alias ll='ls -l' 
alias la='ls -a'

編輯*

如何為“ls”建立別名。例如,ls='ls -CF'。當我使用它作為別名時它不起作用?

答案1

Debian 應該使用 /etc/bash.bashrc。檢查/etc/passwd並確保使用者正在使用 bash shell。

user1:x:1000:1000:User 1:/home/user1:/bin/bash
user2:x:1001:1001:User 2:/home/user2:/bin/zsh

預設情況下,使用 useradd 或 adduser 新增用戶將使用 bash 作為 shell 建立用戶,但這可能已修改為其他 shell(zsh 非常流行)。在上面的範例中,使用者 1 使用 bash shell,使用者 2 使用 zsh。 User2 登入時不會執行 /etc/bash.bashrc。

答案2

看看我的,~/.bashrc我可以看到ls已經定義為alias ls='ls --color=auto'

在as中添加新的ls別名定義沒有幫助,因為我認為 in 的定義是重寫的。/etc/bash.bashrcalias ls='ls -CF'~/.bashrc

ls在我的測試中,將我啟用的別名中定義的註釋註釋~/.bashrc為我為全域定義添加的別名才能etc/bash.bashrc工作。

這與 Red Hat 處理全域別名的方式有很大不同,Red Hat 允許您將全域別名放入其中,/etc/profile.d/[filename].sh但由於Debian 和Red Hat 的設定方式不同以及設定檔和bashrc 檔案之間的關係,這似乎並不存在成為 Debian 的選項。

我的意思是,對於 Red Hat,它透過取得設定檔/bashrc 檔案來處理它們,以便它們適用於各種 shell/登入類型(如此處所述https://unix.stackexchange.com/questions/170493/login-non-login-and-interactive-non-interactive-shells)。然而,對於 Debian 來說,這些檔案似乎/etc/profile.d/*.sh僅來自登入 shell。但由於我之前的回答被刪除,我無法編輯和澄清。

對於 Debian,如果您願意全域別名僅適用於登入 shell,那麼請將它們放入,例如,/etc/profile.d/aliases.sh.否則,看起來您需要將它們添加到/etc/bash.bashrc.請記住,別名 in~/.bashrc將優先。如果您定義的別名不起作用,那麼它們很可能是在其他地方定義的,並且會覆蓋您的別名。

相關內容