10

我正在尝试根据自己的意愿修改我的 Bash 提示;这就是现在的$PS1样子(为了清楚起见,颜色被删掉了):

PS1='\u@\h:\w\$ '

结果是:

andreas@tablet-2710p-ubuntu:~$ 

如果我在本地运行当前的 Bash 会话,而不是访问远程服务器,我可以调整提示以隐藏该@tablet-2710p-ubuntu位(由 表示)吗?@\h

tablet-2710p-ubuntu为了可移植性,我也不想对其进行硬编码(例如,只是替换任何出现的),以防以后更改主机名。

4

2 回答 2

12

正如如何检测外壳是否受 SSH 控制?,如果设置了变量$SSH_CLIENT$SSH_TTY,则表示您正在通过 SSH 连接。

如果您在基于 Debian 的系统(例如 Ubuntu)上,您可以将您.bashrc的内容编辑为类似的内容以达到所需的效果(请注意,PS1设置为的字符串必须用双引号定义,而不是单引号为默认情况下):

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
    if [ "$color_prompt" = yes ]; then
        host="@\[\033[1;34m\]\h\[\033[00m\]"
    else
        host="@\h"
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]${host}:\[\033[01;34m\]\w\[\033[00m\]\$ "
else
    PS1="${debian_chroot:+($debian_chroot)}\u${host}:\w\$ "
fi
unset host
unset color_prompt force_color_prompt

结果如下:

BASH:在本地运行时隐藏主机,通过 SSH 连接时显示主机

旁注:这些更改应在您通过 SSH连接.bashrc服务器上(或.profile,取决于发行版)进行。在您自己的本地 Bash 配置文件中设置它们对连接到其他远程服务器时显示的内容没有影响。

于 2014-05-27T00:25:35.817 回答
5

你想要像下面这样的东西吗?:

if [ "$SSH_CONNECTION" ]; then 
    PS1='\u@\h:\w\$ '
else
    PS1='\u:\w\$ '
fi
于 2014-05-20T09:05:20.330 回答