3

我想使用我的 .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 终端是深灰色?

谢谢!

4

1 回答 1

2

只是出于好奇,该远程计算机是否设置了自己的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环境变量不会重置您的终端颜色。

于 2014-12-18T17:47:17.277 回答