macOSでsshコマンド実行時に環境変数を設定する方法

S 20210604 181019

macOSにsshで接続して「ssh リモートホスト コマンド」を実行しようとしたところ「command not found」と表示されて、実行することができませんでした。

もちろん普通にsshで接続してインタラクティブシェルを起動すれば、コマンドでも何でも普通に実行できるのですが、sshで直接コマンドを実行すると.zshrcが読み込まれず、PATHやその他環境変数を設定することができないようなのです。

このエラーが発生して、毎回調べ直しているような気がしたので、まとめてみました。

zshの場合.zshenvに記述する

結論から書くとzshを使っている場合.zshrcや.zprofileではなく、.zshenvに記述すると「ssh リモートホスト コマンド」でも環境変数を評価してくれる模様です。

例えばPATHに「/opt/local/bin」を追加するには、以下のように.zshrcに記述します。

export PATH=/opt/local/bin::$PATH

もちろん、PATH以外の環境変数を記述しても有効となります。

.bashrcや.bash_profileに相当する.zshrcや.zprofileをいくら変更しても有効ではないので忘れないようにしたいと思います。