![Debian 10 上「別名」的全球使用](https://rvso.com/image/756221/Debian%2010%20%E4%B8%8A%E3%80%8C%E5%88%A5%E5%90%8D%E3%80%8D%E7%9A%84%E5%85%A8%E7%90%83%E4%BD%BF%E7%94%A8.png)
我一直在嘗試在 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.bashrc
alias 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
將優先。如果您定義的別名不起作用,那麼它們很可能是在其他地方定義的,並且會覆蓋您的別名。