我可以访问大量不同的ssh帐户,我想象了几百个,我在不同的场合使用。 其中一些是个人的,其中一些是我从客户那里获得的,并且是共享的,而其中的一些是暂时的。 创build一次使用,一段时间后会自动删除。
现在我的问题是,我使用两个.dircolors,一个灯光和一个黑暗的主题。 我非常喜欢这个设置,但是这意味着每当我login到一台服务器上时,都会拷贝一个新的.dir文件,而共享的帐号偶尔也会让其他人恼火。 我试图修改我的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 --noprofile --norc'它可以工作,但不完全可用,因为它忽略了所有的系统默认信息。
如果我使用: ssh -t vps2 'export LS_COLORS="'$LS_COLORS'"; exec /bin/bash' ssh -t vps2 'export LS_COLORS="'$LS_COLORS'"; exec /bin/bash'这是行不通的,因为bash通过.profile并加载一个不同的LS_COLORS。
有关如何加载默认的.bash_profile / .bashrc并有我自己的LS_COLORS的build议?
创build一个文件,用你喜欢的任何初始化说“prefs.rc”。
$ scp prefs.rc vps2:/tmp/ && ssh vps2 # ssh banner $ . /tmp/prefs.rc && rm /tmp/prefs.rc
我可能会添加一些检查来validation远程文件确实是我的写,并不包含一些木马。 在偏执狂的一面更好地犯错。
或者,用序列启动prefs.rc
. /etc/profile . ~/.bash_profile exec LSCOLORS=...
使用scp来传输,然后:
ssh -t vps2 'exec bash --rcfile /tmp/prefs.rc'
最终,您可能需要复制.bash_profile的全部内容,并replaceLS_COLORS=...行。
这个工程(客户端,没有任何服务器修改): expect -c 'spawn ssh vps2 expect "~#" send "export LS_COLORS=\"no=00:fi=00:ETC_ETC_ETC_ETC:\"\r" interact'
当然是相当不理想(因为它“键入”后的SSH输出命令,造成延迟),任何清洁解决scheme是非常欢迎的! 🙂
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第一,额外的连接延迟这里应该是不存在的。 在login时你不需要任何额外的命令,它会使用现有的shell的设置,除了我的覆盖。 它不会打破terminal大小调整像预期的那样:)
我实际上也用颜色添加了PS1和grep / egrep的别名,但为了便于阅读,上面的示例代码并没有添加。