通过 ssh 在远程服务器上使用本地 LS_COLORS 而无需修改远程服务器

neu*_*ron 5 ssh bash environment-variables

我可以访问大量不同的 ssh 帐户,我可以想象有数百个,我在不同场合使用这些帐户。其中一些是个人的,其中一些是我从客户那里得到的并且是共享的,而且很多都是暂时的。为一次使用而创建,一段时间后将自动删除。

现在我的问题是我使用了两个 .dircolors,一个浅色和一个深色主题。我非常喜欢这个设置,但这意味着每次我 ssh 到服务器时都复制一个新的 .dircolors,并且在共享帐户上偶尔会惹恼其他人。我尝试修改我的 ssh 脚本以允许我使用我的本地 LS_COLORS,但是我遇到了一些问题。

如果我使用: ssh -t vps2 'export LS_COLORS="'$LS_COLORS'"; exec /bin/bash --noprofile --norc' 它有效,但不完全可用,因为它忽略了所有系统默认信息。

如果我使用: ssh -t vps2 'export LS_COLORS="'$LS_COLORS'"; exec /bin/bash' 它不起作用,因为 bash 通过 .profile 并加载不同的 LS_COLORS。

关于如何加载默认 .bash_profile/.bashrc 并拥有自己的 LS_COLORS 的任何建议?

neu*_*ron 0

ssh -t vps2 ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'

这将不需要额外的 scp 就可以工作,这里的额外连接延迟应该不存在。您在登录期间不需要任何额外的命令,并且它将使用现有 shell 的设置,除了我的覆盖。它不会像预期那样破坏终端大小调整:)

实际上,我还添加了 PS1 和带有颜色的 grep/egrep 别名,但为了便于阅读,上面的示例代码没有添加它。