前回
開発環境
モチベーション
前回は以下をやった。
コンパイラ本を進めていくうちに、アセンブリファイルの他にMakefileを渡したくなってきた。ディレクトリを同期して接続先のシェルでコマンド実行した方が楽そうと思えてきたので試す。
ディレクトリの同期
rsyncで以下のようにした。
rsync \ -avz ./ $HOST:$DIST \ --exclude '.git' \ --exclude '.ssh' \ --rsh "ssh -F ./.ssh/config"
前回はsshのconfigファイルを使ってなかったが、毎回接続先を直接渡す必要がなくて便利だったので使ってみた。
また、--dry-run
を付けて何が送信されるかを確認してから本番実行したほうが健全そう。下記でRcloneを試した話を書いたが、mountかsyncのどちらかでローカルとリモートのパスを逆にして手元のディレクトリを吹き飛ばしてしまったので、事前確認の重要性を知った。
Rclone
ディレクトリの同期でrsyncの他にRcloneを試した。Rcloneでも問題なく同期はできたがMacBook Proにプリインストールされてるrsyncで特に困らなかったので、rsyncを使うようにした。
SSH接続したときのみ特定のディレクトリに移動
毎回上記で同期したディレクトリに移動するのは面倒なのでSSH接続時に特定のディレクトリに移動させるようにした。
接続先の .bashrc
に以下を追加した。
if [[ -n "$SSH_CLIENT" ]]; then cd /hoge/fuga/9cc fi
本当はクライアント側で初期ディレクトリを指定したかったが、インターネットの情報では何だかしっくり来なかったので、シンプルに接続先側でSSH接続のときのみ特定のディレクトリに移動するようにした。接続先の用途が他にないのでこれで良いだろう。