Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用PS1设置通过ssh设置不同的终端背景颜色_Linux_Bash_Ssh_Ps1 - Fatal编程技术网

Linux 使用PS1设置通过ssh设置不同的终端背景颜色

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设置更改为,比如说,我

我想使用.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设置更改为,比如说,我的本地终端是深蓝色,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“$@”| |读取
。转义码仅更改后续打印字符的背景颜色,而不是终端窗口的整个背景。这由终端仿真器处理,而不是外壳。