更改所有 Bash 用户的 PS1 值

更改所有 Bash 用户的 PS1 值

我正在尝试将系统所有用户的提示值($PS1 变量)更改为相同的值。

我在文件 /etc/ps1 中存储了以下内容:

PS1='`
  if [ $? -eq 0 ];
    then echo -n "\[\033[00;35m\]\u\[\033[01;32m\]@\[\033[00;35m\]\h\[\033[00;32m\](\[\033[01;35m\]\W\[\033[01;32m\])\[\033[00;32m\]\$";
    else echo -n "\[\033[00;35m\]\u\[\033[01;31m\]@\[\033[00;35m\]\h\[\033[01;31m\](\[\033[35m\]\W\[\033[31m\])\[\033[00;31m\]\$";
  fi`\[\033[0m\]'

在我的单用户帐户下,我可以将其添加source /etc/ps1到我的 ~/.profile 文件中,这样就可以正常工作(有趣的是,当我将其添加到 ~/.bashrc 中时,它不起作用)。如果我将其添加到 /etc/profile 或 /etc/bashrc.basrch 中以使所有用户都实现这一点,则什么也不会发生。我绞尽脑汁试图让它工作。这是在 Debian 7.1.0(Linux 3.2.46)上。

答案1

将修改后的 PS1 设置添加到/etc/profile.d/custom_ps1.sh。 下的文件/etc/profile.d自动来源于/etc/profile

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

每当生成登录 shell 时都会调用它。从bash手册页

当 bash 作为交互式登录 shell 或使用 选项作为非交互式 shell 调用时--login,它首先从文件 读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile~/.bash_login~/.profile,然后从第一个存在且可读的文件中读取和执行命令。--noprofile启动 shell 时可以使用 选项来禁止此行为。

相关内容