在 iterm2 中 ssh 后触发 echo 命令

在 iterm2 中 ssh 后触发 echo 命令

我尝试在“ssh somehost”之后触发以下命令: export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'

好像没有什么作用,有什么建议吗?

答案1

我认为这是不可能的。

首先,我必须重写你的命令;尽管由于你希望获得的东西无法实现这一事实(见下文)而导致这一点无效,但这样做的方法很有趣且具有普遍性,因此我将对其进行讨论。我不得不将你的命令更改为

  ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=${COLOR[@]}'

原因是需要防止本地 shell 替换$HOSTANMElocal值,因此我们传递给远程服务器的内容必须用单引号括起来'。要使此方法有效,必须有传递的命令中不能出现单引号,因此我必须重写它,使得远程执行的命令中不出现单引号。我设法用数组做到这一点。COLOR命令

COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=${COLOR[@]}  

在本地运行良好(颜色由我选择)。

有两种方法可以通过 ssh 导出环境变量。第一种方法是更改AcceptEnv​​服务器/etc/ssh/sshd_config文件中的变量:但是手册状态

接受环境

指定客户端发送的哪些环境变量将被复制到会话的环境

这里的重点是会议:没有全局变化。

第二种方法是通过PermitUserEnvironment变量:

许可证用户环境

Specifies whether ~/.ssh/environment and environment= options in
 ~/.ssh/authorized_keys are processed by sshd.  The default is
 "no".  Enabling environment processing may enable users to bypass
 access restrictions in some configurations using mechanisms such
 as LD_PRELOAD.

ssh正如你所看到的,不是允许远程用户更改全局环境变量。

相关内容