我在我的bashconfiguration中有一堆好东西 。 通常当我得到一个新的帐户,我从我的GitHub回购拉下来,使我有我习惯的所有别名和function。 有一些主机,我没有我自己的帐户,但一些人使用的共享帐户,所以我安装我的shellconfiguration是不礼貌的。
有没有办法通过SSH会话来推送我的shellconfiguration或至less一些初始化命令,以便拥有我习惯的环境?
插入关于共享帐户的强制性抱怨,但如果您至less拥有自己的ssh密钥,则可以使用~/.ssh/authorized_keys文件中的command=选项。 带有命令选项的键只适用于运行指定的命令; 但authorized_keys文件中的命令与设置为用户指定的命令的环境variablesSSH_ORIGINAL_COMMAND一起运行(交互式会话为空)。 所以你可以在~/.ssh/authorized_keys使用这样的东西:
command="HOME=$HOME/.HOME.drew; if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then eval \"$SSH_ORIGINAL_COMMAND\"; else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]
请注意,为了便于阅读,我在上面放置了换行符,但是这实际上需要全部放在authorized_keys文件的一行中。
然后把你最喜欢的configuration文件放在那个.HOME.drew目录下。
为了准时使用,您可以显式地获取configuration文件或运行任何shell命令。 如果要运行交互式命令,请将-t选项传递给terminal。
ssh shared-account@server "LS_COLORS='$LS_COLORS' ls --color" ssh -t shared-account@server '. ~/.profile.drew; exec zsh'
如果您只想在远程计算机上编辑或复制文件,则可以使用SSHFS (针对unix客户端)或Tramp (针对Emacs)等networking文件系统,并且可以在舒适的本地环境中工作。
我喜欢在一个方便的地方保存一个.bsa的文件(也许~会在这种情况下工作),所以我可以. ~/.bsa . ~/.bsa来获取我的环境。
也许试着用“LocalCommand”来破解一些东西(参见man ssh_config)?