我正试图按照我的意愿修改我的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)以便于移植,以及以后更改主机名.
如我所知,如何检测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)
其结果如下:

附注:这些变化应在做出.bashrc(或.profile,取决于分布)上的服务器要连接到 SSH上.在您自己的本地Bash配置文件中设置它们对连接到其他远程服务器时显示的内容没有影响.
您是否想要以下内容?:
if [ "$SSH_CONNECTION" ]; then
PS1='\u@\h:\w\$ '
else
PS1='\u:\w\$ '
fi
Run Code Online (Sandbox Code Playgroud)