不同用户的 Bash 提示符变化

不同用户的 Bash 提示符变化

通过最新的硬件/操作系统更新,我们在整个域中实施了 FQDN。现在,当我们 ssh 到远程站点时,我们在终端会话中无法获得正确的提示。这不会是一个问题,除非我们经常通过 ssh 连接到多个站点,并且无论我们连接到哪个站点,所有提示都是相同的。在实施 FQDN 之前,我们之前将每个站点网关服务器的主机名设置为站点名称(site1、site2 等),因此登录提示允许我们识别在每个远程终端会话中连接到的站点。

现在,RHEL 7 使用 FQDN,这是我们的主机名:

user1@site1:/home/user1
# hostnamectl status
   Static hostname: gwsrv.site1.system.division.company.com
   Pretty hostname: site1
         Icon name: computer-server
           Chassis: server
        Machine ID: 988c77c116d744fb8b26629aab7beace
           Boot ID: b56bd8e144924560a9051dafbd2ac867
  Operating System: Red Hat Enterprise Linux Server 7.3 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.3:GA:server
            Kernel: Linux 3.10.0-514.el7.x86_64
      Architecture: x86-64

我们使用 /etc/profile.d/profile.sh 修改了提示符,并按预期格式化提示符:

PS1=`/usr/bin/whoami`@`/usr/bin/hostnamectl --pretty`:'$PWD
# '

返回提示:

user1@site1:/home/user1
# 

如果我将自己提升为 root,我会得到相同的提示:

user1@site1:/home/user1
# su
Password:
root@site1:/home/user1
#

但是,如果我更改为任何其他用户,我会收到不同的提示:

user1@site1:/home/user1
# su user2
Password:
[user2@gwsrv user1]$

如果我以任何其他用户的身份 ssh 登录并不重要,我对所有用户的提示(除了 user1 和 root 之外)都会给出相同的提示:

[user#@gwsrv ~]$

我需要修改哪个文件和哪一行来更改此其他提示以类似于 user1 和 root 的提示:

[user#@site1 ~]$

具体来说,我们需要它来显示他们登录的是该站点而不是 gwsrv。

谢谢您的帮助。

答案1

中的配置/etc/profile可以(并且经常会)被用户在其主目录中自己的设置覆盖(例如~/.bash_profile)。如果没有以某种方式实现阻止用户在自己的环境中进行设置的机制PS1,则实际上没有办法强制用户具有特定的提示。

可以做一些事情,比如grep 'PS1=' /home/*/.*找到可能改变事情的候选人,但这不一定是详尽无遗的。

相关内容