我可以SSH到特定目录吗?

我每天都会通过SSH连接到多个不同的服务器,其中一些服务器的网站有不同的文件系统结构。 每次我更换服务器时,我都要弄清楚我要去哪里找到我真正想要的文件(因为我很少想要进入~ )。

我使用Fabric文件自动执行所有操作(推送到git,自动SSH到服务器以从git中提取,重新启动Web应用程序,更改依赖项等),所以我想知道我是否也不能告诉它我想要SSH到正确的目录,所以我可以运行fab ssh并在正常的SSH会话中,只是在正确的位置,并立即开始工作。

这不是关于Fabric的; 请忽略它。 Fabric正在运行一批命令。 我的论点是使用ssh命令。 这就是我要告诉Fabric运行的内容。

那么如何在登录时让ssh进入特定目录?

注意:这不能是服务器或用户范围的事情。 我在一些服务器上的一个用户下有多个网站,所以在~/.bashrc粘贴一些东西对我来说不起作用。

嗯,我知道我可以在登录时运行一些东西,但我知道它会在运行后直接退出。 我现在记得的是,我可以在远程服务器上运行尽可能多的运行。 您可以将命令链接在一起!

 ssh user@server -t "cd /websites/website ; /bin/bash" 

现在我可以告诉织物这样做,我们就走了。 简单。


我确实说过它与Fabric无关,但基于以上内容,这里也是我的结构脚本的新部分:

 def ssh(): ''' SSH into the remote server at the correct directory ''' local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % { 'server': server_host, 'port': server_port, 'remote_dir': remote_dir, }) 

我通过符号链接相同的脚本,因此变量( server_hostserver_portremote_dir )在站点之间发生变化。

由于Fabric可以处理出站连接,您也可以这样做:

 def ssh(): ''' SSH into the remote server at the correct directory ''' run('cd %s ; /bin/bash' % remote_dir) 

这确实有效,但输出前面有一个Fabric字符串。 这使得提示超过80个字符长,虽然我有很多分辨率,这对我来说太多了:)