如果远程运行,只在bash提示符中列出主机?

IQA*_*eas 9 bash ps1

我正试图按照我的意愿修改我的Bash提示; 这就是$PS1目前的情况(为了清晰起见,编辑了颜色):

PS1='\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

结果如下:

andreas@tablet-2710p-ubuntu:~$ 
Run Code Online (Sandbox Code Playgroud)

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

我还宁愿不硬编码(例如,只是替换任何出现的tablet-2710p-ubuntu)以便于移植,以及以后更改主机名.

IQA*_*eas 9

我所知,如何检测shell是否受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
Run Code Online (Sandbox Code Playgroud)

其结果如下:

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

附注:这些变化应在做出.bashrc(或.profile,取决于分布)上的服务器要连接 SSH上.在您自己的本地Bash配置文件中设置它们对连接到其他远程服务器时显示的内容没有影响.


ani*_*ane 5

您是否想要以下内容?:

if [ "$SSH_CONNECTION" ]; then 
    PS1='\u@\h:\w\$ '
else
    PS1='\u:\w\$ '
fi
Run Code Online (Sandbox Code Playgroud)