Bash
Linux MINT20“Ulyana”不保留 PS1 根設置
以下是我目前在
/etc/bash.bashrc
和中的 PS1 設置~/.bashrc
:if [[ ${EUID} == 0 ]]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;36m\] \W \$\[\033[00m\] ' else PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;36m\] \w \$\[\033[00m\] ' fi
它只適用於普通使用者而不適用於root,為什麼?它總是返回給我 PS1=
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
由於後面的提示符
su
不是/home/maxdm
,~
說明該su
命令可能將HOME
環境變數的值更改為 root 使用者的主目錄,/root
。這意味著該
su
命令以 root 身份啟動的 shell 確實執行/root/.bashrc
了,而不是/home/maxdm/.bashrc
. 所以你的自定義 PS1 設置沒有被執行。如果您不希望
.bashrc
預設擁有每個使用者的文件,您可以刪除該文件或將其移動到另一個名稱。如果您想為系統上的所有現有使用者執行此操作,則此單行程序將執行此操作:for userhome in $(cut -d : -f 6 /etc/passwd); do [ -f $userhome/.bashrc ] && mv $userhome/.bashrc $userhome/bashrc.disabled; done
要停止
.bashrc
為您以後可能創建的新使用者自動添加,只需刪除或重命名新使用者主目錄模板中的文件,/etc/skel
:mv /etc/skel/.bashrc /etc/skel/bashrc.disabled
阻止使用者擁有
.bashrc
自己定制的能力並不是一個常見的要求:通常使用者的內容.bashrc
被認為是使用者的業務,而不是系統管理員的。但是,如果您出於某種原因需要這樣做,則放置一個空文件.bashrc
並將其設置為不可變(chattr +i .bashrc
)應該可以解決問題。(請注意,
userdel -r
除非您先撤消不變性,否則這也可以防止刪除使用者的主目錄。)