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


39

サーバーに頻繁にログインしてから、特定のディレクトリに移動します。これらの2つのコマンドを1つに単純化することは可能ですか?

ssh bob@foo  
cd /home/guest

サーバー管理者と一緒にクリアする必要があるため、可能であれば 'foo'の変更は避けたいと思います。私はbashを使用しますが、他のシェルでの回答にはオープンです。

回答:


22

fooの〜bob / .bash_profileファイルの最後の行として置くだけです:

cd /home/guest >& /dev/null

これで、ログインするたびに(SSHによるかどうかに関係なく)、cdコマンドが実行されます。sshをいじる必要はありません。

「可能であれば 'foo'の変更は避けたい」と書いたのは知っていますが、bob @ fooアカウントが自分のものである場合、独自の.bash_profileを変更してもかまいません。


2
はい、なぜこれがうまくいくと思います。その変更を行うためにIT部門から許可を得る必要はありません。>&/ dev / nullが必要な理由について詳しく説明していただけますか?
スパーダー

6
私はそれがあるべきだと思う&> /dev/null。cdがディレクトリを/ home / directoryに変更できない場合に表示されるエラーメッセージを防ぎます。それらのメッセージを表示したい場合は、除外することができます。
konsolebox

5
>&そして&>バッシュで同じです。ただし、後者のスタイルが推奨されます。

さらに、/ dev / nullへのリダイレクトにより、ディレクトリ名が画面上にエコーされるのを防ぎます。
DanB

41

これはOpenSSHで機能します。

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

最後の引数はログインシェルで実行されます。-tフラグに渡されるsshssh疑似端末、対話型シェルに必要な割り当てます。に-l渡されたフラグはbashログインシェルとしてbash を起動します


3
bashに-lオプションを追加することも役立つのでしょうか?... && exec bash -l
konsolebox

1
@konsolebox:それはいい考えです。それを答えに加えました。

17

@EvanTeitelmanのソリューションと同様に、この方法でも実行できます。

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

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

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

またはこのように:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.