Linux 使用PS1设置通过ssh设置不同的终端背景颜色
我想使用.bashrc文件中的PS1设置,根据我是在本地计算机上还是在使用ssh来更改终端的颜色 本地计算机和ssh服务器上当前的.bashrc文件是(默认值):Linux 使用PS1设置通过ssh设置不同的终端背景颜色,linux,bash,ssh,ps1,Linux,Bash,Ssh,Ps1,我想使用.bashrc文件中的PS1设置,根据我是在本地计算机上还是在使用ssh来更改终端的颜色 本地计算机和ssh服务器上当前的.bashrc文件是(默认值): PS1='${debian\u chroot:+($debian\u chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$” 我试着在终端添加“\e[40m”,但只改变了终端的部分背景,在中间留下了一个黑条 我如何将PS1设置更改为,比如说,我
PS1='${debian\u chroot:+($debian\u 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\u函数
,该函数在执行ssh
之前设置屏幕颜色,然后在退出ssh
后重置屏幕颜色。清除
是清除终端,因此您会得到一个恒定的颜色。否则,它只会在您的提示下重置颜色
然后希望远程
PS1
环境变量不会重置您身上的终端颜色。为什么需要别名和函数?函数ssh
单独工作不起作用吗?此外,您很可能忘了将函数的参数传递给命令ssh
:command ssh“$@
。是的,我忘了传递ssh
参数。在某些版本的Bash\ssh
中,调用名为ssh
的函数,而不是命令本身。当您使用别名时,别名调用函数,\ssh
是未关联的名称。因此,您需要两个函数和一个别名。@gniourf\u gniourf我在运行ssh命令时也做了一些错误检查,以防您给它一个错误的远程名称。否则,终端会闪烁,并且您看不到错误消息。最好将参数作为“$@”传递
而不是$*
。要确保调用命令ssh
,请预先添加内置的命令如下:command ssh“$@”
。哦,你肯定不想通过read
来传递ssh
。你想要命令ssh“$@”| |读取
。转义码仅更改后续打印字符的背景颜色,而不是终端窗口的整个背景。这由终端仿真器处理,而不是外壳。