Comment SSH dans un directory spécifique?

Je me connecte fréquemment à un server, puis le cd dans un directory spécifique. Est-il possible de simplifier ces deux commands en une seule?

ssh bob@foo cd /home/guest 

Je voudrais éviter de changer quoi que ce soit sur 'foo' si possible, car je vais devoir le supprimer avec l'administrateur du server. J'utilise bash, mais je suis ouvert aux réponses dans d'autres coquillages.

Il suffit de mettre la dernière ligne de votre file ~ bob / .bash_profile sur foo:

 cd /home/guest >& /dev/null 

Maintenant, chaque fois que vous vous connectez (que ce soit par SSH ou autrement), la command cd s'exécutera. Il n'est pas nécessaire de contourner ssh.

Je sais que tu as écrit que tu «voudrais éviter de changer quoi que ce soit sur 'foo' si possible», mais si le count bob @ foo est le vôtre, changer ton propre file .bash_profile devrait être acceptable, non?

Cela fonctionne avec OpenSSH:

 ssh -t bob@foo 'cd /home/guest && exec bash -l' 

Le dernier argument s'exécute dans votre shell de connection. L'indicateur -t transmis à ssh force ssh à allouer un pseudo-terminal, ce qui est nécessaire pour un shell interactif. Le drapeau -l transmis à bash commence bash en tant que shell de connection .

Vous pouvez également le faire de cette façon, similaire à la solution @ EvanTeitelman:

 $ ssh -t bob@foo "cd /tmp ; bash" 

Ou si vous ne connaissez pas la coquille à l'autre bout:

 $ ssh -t bob@foo "cd /tmp && exec \$SHELL" 

Ou comme ça:

 $ ssh -t bob@foo 'cd /tmp && exec $SHELL'