使用PS1设置在ssh上设置不同的终端背景颜色

时间:2014-12-18 16:29:03

标签: linux bash ssh ps1

我想使用.bashrc文件中的PS1设置根据我是在本地计算机上还是使用ssh来更改终端的颜色。

我本地计算机和ssh服务器上的当前.bashrc文件是(默认值): PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

我尝试将"\e[40m"添加到最后,但只更改终端背景的一部分,在中间留下一个黑条

我如何将PS1设置更改为,例如,我的本地终端是深蓝色,ssh终端是深灰色?

谢谢!

1 个答案:

答案 0 :(得分:1)

出于好奇,远程机器没有设置自己的PS1值,这意味着无论你在本地设置提示,该远程机器都会覆盖它?

解决此问题的一种方法是设置一个函数来替换实际的ssh命令。让该函数设置终端的颜色,然后运行实际的ssh命令:

function ssh_function
{
    printf "\e[40m\e[37m"    # Grey on black
    clear
    \ssh $@ || read           # Actual ssh command
    printf "\e[0m"           # Reset terminal
    clear
}

现在,创建一个别名:

alias ssh="ssh_function"

现在,当您运行ssh时,它将运行您的ssh_function,在执行ssh之前设置屏幕颜色,然后在ssh之外重置屏幕颜色。 clear用于清除终端,因此您可以获得恒定的颜色。否则,它只会在您的提示符处重置颜色。

然后希望远程PS1环境变量不会重置您的终端颜色。