Linux MINT20“Ulyana”不保留 PS1 root 设置

Linux MINT20“Ulyana”不保留 PS1 root 设置

下面是我当前在/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\$ 在此输入图像描述

答案1

由于后面的提示符su不是/home/maxdm~说明该su命令可能将环境变量的值更改HOME为 root 用户的主目录/root

这意味着 shell 以 root 身份启动的su命令确实执行了/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删除用户的主目录,除非您首先撤消不变性。)

相关内容