通过 SSH 连接到其他主机时更改 PS1 颜色

tom*_*ozb 5 colors bash prompt

我正在尝试根据我使用 SSH 连接的主机来更改 PS1 外观。我现在的 PS1:

PS1='\[\e[1;32m\]\u@\h\[\e[1;34m\] \w\[\e[1;31m\]$(__git_ps1)\[\e[1;0;37m\] \$\[\e[0m\] '
Run Code Online (Sandbox Code Playgroud)

主机host1我想和黄色这是为了替换第一颜色1;33和用于host21;35作为一个例子。

如何确定我已使用 SSH 连接到给定主机并相应地更改 PS1?

Gil*_*il' 11

分段构建您的提示规范,或使用中间变量,或两者的组合。SSH 设置SSH_CLIENT变量,该变量指示您从何处登录。然后,您可以使用主机名来确定您登录的位置。

if [[ -n $SSH_CLIENT ]]; then
  case $HOSTNAME in
    *.example.com) prompt_user_host_color='1;35';; # magenta on example.com
    *) prompt_user_host_color='1;33';; # yellow elsewhere
  esac
else
  unset prompt_user_host_color # omitted on the local machine
fi
if [[ -n $prompt_user_host_color ]]; then
  PS1='\[\e['$prompt_user_host_color'm\]\u@\h'
else
  PS1=
fi
PS1+='\[\e[1;34m\] \w\[\e[1;31m\]$(__git_ps1)\[\e[1;0;37m\] \$\[\e[0m\] '
Run Code Online (Sandbox Code Playgroud)

  • @Stephane是的,如果代码仅放置在单个服务器上,那么对“$HOSTNAME”的分析将没有用处。登录多台计算机的人通常会将其配置文件复制到所有计算机上。 (2认同)