sh 構文エラー追跡

sh 構文エラー追跡

CMS Drupalが使用するdrushというPHP /コマンドラインツールを介してリモートWebホストに接続する同僚がいます。

Drushはsshを介してリモートホストに接続しますが、コマンドを実行するとbashが特定のファイルを解析しようとするとエラーが発生します。ただし、どのファイルに構文エラーがあるかはわかりません。

Begin redispatch via drush_invoke_process(). [2.01 sec, 6.87 MB]        [notice]
Backend invoke: ssh -p 2222 -o "AddressFamily inet"                    [command]
[email protected]
'drush  --debug --verbose --uri=myremotehost.com
--db-url='\''mysql://host:myremotehost.com:11297/database'\''
 cache-rebuild 2>&1' 2>&1 [2.01 sec, 6.88 MB]
Calling proc_open(ssh -p 2222 -o "AddressFamily inet" [email protected] 'drush  --debug --verbose --uri=mysite.com --db-url='\''mysql://host:myremotehost.com:11297/database'\''  cache-rebuild 2>&1' 2>&1);
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
End redispatch via drush_invoke_process(). [5.36 sec, 6.88 MB]          [notice]

シェルが正常に起動し、一般的なGNUユーティリティコマンドを実行できるため、.bashrcシェルや他のドットファイルにエラーはありません。

トラブルシューティングとして、drushコマンド(シェルとPHPスクリプトの組み合わせ)を再インストールしました。これを使用して、リモートホストに接続するコマンド以外のさまざまなコマンドを実行できます。

エラーが発生した場所の追跡をどのように開始しますか?

GNU bash, version 4.4.12(1)-release (x86_64-pc-msys)Windows 7ではgit-bashを使用しています。

編集する

上に貼り付けた出力から詳細な情報を得るために、いくつかの詳細なデバッグスイッチを使用しました。

ちょうどdrush alisesファイルを再ダウンロードし、スイッチなしでコマンドを再実行しましたが、これが私たちが得たものです。

$ drush @mysite status
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file

ベストアンサー1

ログによると、SSH経由で送信されたコマンドが破損しています。問題を解決するには、まずdrushでssh呼び出しの場所を見つけます。

SSHに渡されるコマンドは次のとおりです。

    drush  --debug --verbose --uri=myremotehost.com --db-url='\''mysql://host:myremotehost.com:11297/database'\'
  1. それに分解されるdrush ... --db-url= '\' 'mysql://.../database' \'
  2. 後者は提案を開始するのと同じであるため\'終了しない。'

Bash Referenceは、Bashが何であるかを正確に学ぶのに最適な場所です。

おすすめ記事