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

谢谢!

最佳答案

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

关于linux - 使用 PS1 设置通过 ssh 设置不同的终端背景颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27551307/

10-14 13:19
查看更多