ssh
からmycomputer
にlogincomputer
するとき、cd
の現在のディレクトリ(ssh
コマンドが実行されたディレクトリ)に自動的にmycomputer
を入れたいと思います。特に:
> cd /tmp/
今/tmp/
は現在の作業ディレクトリです。
> ssh mycomputer
> cd /tmp
これを1つのコマンドで自動的に実行したいと思います。これは可能ですか?ディレクトリ構造が両方のコンピュータでまったく同じであると想定します。
https://stackoverflow.com/questions/626533/how-can-i-ssh-directly-to-a-particular-directory
StackOverflowで回答しました。
ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted"
これをシェルスクリプトに追加できます。
ssh -t xxx.xxx.xxx.xxx "cd \$PWD; bash"
.bashrc
ファイルに次の行を追加することをお勧めします。
sshcd() { ssh -t "$@" "cd '$(pwd)'; bash -l"; }
次に、を使用してリモートホストにSSH接続できます
sshcd mycomputer
Sshオプションを渡すことも期待どおりに機能します。別のポートを指定するには:
sshcd mycomputer -p 2222`
それがどのように機能するかを分析します。
sshcd() { \ # Define a function called sshcd
ssh -t \ # ssh and get remote pty although a command is given
"$@" \ # Pass all options from sshcd to ssh
"cd '$(pwd)'; \ # Get the local directory using pwd, cd to it remotely
bash -l"; \ # Then start a login Shell on the remote Host
}
これを行う正しい方法:
ssh -t xxx.xxx.xxx.xxx "cd \$PWD; bash"