質問: 初めて質問いたします。 表題のとおりなのですが、 ``` ssh command ``` のようにコマンドを実行したところ、 command のパスが通っておりませんでした。 なお、command コマンドは .zshrc でパスを通しています。 そこで、以下の実験を行いました。 まず、リモートサーバの .zshenv には以下の内容を追記し、 ``` CHECK_ZSHENV='loaded!' ``` 同じくリモートサーバの .zshrc には以下の内容を追記しました。 ``` CHECK_ZSHRC='loaded!' ``` そして以下を実行しました。 ``` ssh 'echo $CHECK_ZSHENV' loaded! ssh 'echo $CHECK_ZSHRC' ``` 結果は以上の通りで、やはり .zshrc は読まれておりませんでした。 ふつうに ssh でログインをした場合には .zshrc は読まれております。 ``` ssh command ``` 形式でコマンドを実行した場合インタラクティブシェル扱いになり、 .zshrc が読まれるものと考えたのですが、間違っていますでしょうか。 間違っていない場合、問題としては何が考えられますか。 これを解決する方法があれば、合わせてご教示いただけますと幸いです。 なお、サーバ、クライアントともに Arch Linux を利用しております。 追加で必要な情報があれば、お知らせください。 よろしくお願いいたします。
回答: > > > ``` > ssh command > > ``` > > 形式でコマンドを実行した場合インタラクティブシェル扱いになり、.zshrc が読まれるものと考えたのですが、間違っていますでしょうか。 > > > インタラクティブシェルというのはプロンプトを表示してユーザのコマンド入力を受け付ける状態のシェルの事を言います。 コマンドを指定した場合はインタラクティブシェルでは無いので、.zshrc が読み込まれないのは正しい動作です。 `ssh command` で自分で設定したPATHを利用したい場合、.zshenvで設定する必要があります。