2011-02-09 4 views
0

私はリモートでコマンドを実行するためにsshを使用するbashスクリプトを持っています。 私は、背景やないでコマンドを起動するかどうかによって、動作中しかしかなりかなりの違いを発見:正しくsshがリモートでコマンドを実行し、PATHがどのように決定されますか?

ssh host cmd1 && cmd2 && cmd3 

ssh host "cmd1 && cmd2 && cmd3" & 

第2のケースで、いくつかのコマンドが実行されていないため、彼らドン$ PATHには表示されません。これらの2つの状況(envをコマンドとして渡すとかなりの違いに気づいた)では環境が異なるようです。

どのように説明するのですか?

私はPATH変数をオーバーライドすることができますが、2番目の例を最初に "&"のように振る舞うようにするには、もっと上手にそれを行う方法がありますか? sshdのコンパイル中

答えて

6

最初のコマンドでは、ローカルホストではなく、リモートホストでcmd2とcmd3を実行している可能性があります。 &&という単語はローカルシェルによって解釈され、sshの引数として渡されません。

1

PATHが設定されているリモートコマンドの実行中に

[~]> grep PATH /etc/sshd_config   
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin 

常に絶対パスを使用します。

関連する問題