私はしばしばサーバーにログインし、特定のディレクトリに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に次のように渡されたフラグssh
ssh
-l
bash
ログインシェル。
答え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'