Bash

Linux MINT20“Ulyana”不保留 PS1 根設置

  • September 12, 2020

以下是我目前在/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除非您先撤消不變性,否則這也可以防止刪除使用者的主目錄。)

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