40418


初めて質問いたします。

表題のとおりなのですが、

[code]

    ssh <remote host> command
    
[/code]

のようにコマンドを実行したところ、  
command のパスが通っておりませんでした。  
なお、command コマンドは .zshrc でパスを通しています。

そこで、以下の実験を行いました。  
まず、リモートサーバの .zshenv には以下の内容を追記し、

[code]

    CHECK_ZSHENV='loaded!'
    
[/code]

同じくリモートサーバの .zshrc には以下の内容を追記しました。

[code]

    CHECK_ZSHRC='loaded!'
    
[/code]

そして以下を実行しました。

[code]

    ssh <remote host> 'echo $CHECK_ZSHENV'
    loaded!
    ssh <remote host> 'echo $CHECK_ZSHRC'
    
[/code]

結果は以上の通りで、やはり .zshrc は読まれておりませんでした。  
ふつうに ssh でログインをした場合には .zshrc は読まれております。

[code]

    ssh <remote host> command
    
[/code]

形式でコマンドを実行した場合インタラクティブシェル扱いになり、  
.zshrc が読まれるものと考えたのですが、間違っていますでしょうか。  
間違っていない場合、問題としては何が考えられますか。  
これを解決する方法があれば、合わせてご教示いただけますと幸いです。

なお、サーバ、クライアントともに Arch Linux を利用しております。  
追加で必要な情報があれば、お知らせください。  
よろしくお願いいたします。


CC BY-SA 3.0
2017-09-20T04:08:10.187
38054
2017-12-20T06:56:05.483
2017-09-20T04:24:19.617
25483
25483
question
linux ssh zsh
ssh <remote host> command で展開されるシェルが .zshrc を読んでいない


>
[code]

>     ssh <remote host> command
>  
[/code]

>
> 形式でコマンドを実行した場合インタラクティブシェル扱いになり、.zshrc が読まれるものと考えたのですが、間違っていますでしょうか。

インタラクティブシェルというのはプロンプトを表示してユーザのコマンド入力を受け付ける状態のシェルの事を言います。  
コマンドを指定した場合はインタラクティブシェルでは無いので、.zshrc が読み込まれないのは正しい動作です。

`ssh <remote host> command` で自分で設定したPATHを利用したい場合、.zshenvで設定する必要があります。


CC BY-SA 3.0
2017-12-20T06:56:05.483
40418
2017-12-20T06:56:05.483
12203
38054
answer