特定のディレクトリにSSHで接続する方法は?

特定のディレクトリにSSHで接続する方法は?

私はしばしばサーバーにログインし、特定のディレクトリにCDを移動します。これら2つのコマンドを1つに単純化できますか?

ssh bob@foo  
cd /home/guest

可能であれば、「foo」の内容は変更しないでください。これを消去するには、サーバー管理者と協力する必要があるからです。私はbashを使用しますが、他のシェルから答えを得ることができます。

答え1

これはOpenSSHで動作します。

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

最後のパラメータはログインシェルで実行されます。対話型シェルに必要な擬似端末を強制割り当てする-tために渡されるフラグ。 bashに次のように渡されたフラグsshssh-lbashログインシェル

答え2

~bob/.bash_profile ファイルの最後の行を foo に入れます。

cd /home/guest >& /dev/null

これで、ログインするたびに(SSH経由でも別の方法でも)cdコマンドが実行されます。 SSHを台無しにする必要はありません。

「可能であれば「foo」への変更を避けたい」と書いたことを知っています。ただし、bob@fooアカウントがあなたのものである場合は、自分の.bash_profileを変更することを許可する必要があります。そうですか?

答え3

@EvanTeitelmanのソリューションと同様に、これを行うこともできます。

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

または反対側のシェルがわからない場合:

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

または次のようになります。

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

関連情報