質問: drushを実行しようとすると、「:そのようなファイルまたはディレクトリはありません」 なぜdrushが突然機能しなくなったのかを理解するために、頭を壁にぶつけてきました。私は作曲家を介して再インストールしました、異なるバージョンを試しました、いつも同じエラーです。which drushと入力すると、正しい/home/user/.composer/vendor/bin/drushが表示されます。スクリプトで何が起こっているのかをデバッグするためにsh -vx drushと入力すると、次の出力が得られます。#!/usr/bin/env sh # # this script is a simple wrapper that will run drush with the most appropriate # php executable it can find. # # solaris users: add /usr/xpg4/bin to the head of your path # + : not found/.composer/vendor/bin/drush: 8: /home/user/.composer/vendor/bin/drush: # get the absolute path of this executable self_dirname="`dirname -- "$0"`" + dirname -- /home/user/.composer/vendor/bin/drush + self_dirname=/home/user/.composer/vendor/bin self_path="`cd -p -- "$self_dirname" && pwd -p`/`basename -- "$0"`" + cd -p -- /home/user/.composer/vendor/bin /home/user/.composer/vendor/bin/drush: 1: cd: can't cd to /home/user/.composer/vendor/bin + basename -- /home/user/.composer/vendor/bin/drush + self_path=/drush + : not found/.composer/vendor/bin/drush: 12: /home/user/.composer/vendor/bin/drush: # decide if we are running a unix shell on windows if `which uname > /dev/null 2>&1`; then case "`uname -a`" in /home/user/.composer/vendor/bin/drush: 15: /home/user/.composer/vendor/bin/drush: syntax error: word unexpected (expecting "in") えーとさて、uname -a?私のサーバーからの応答は:linux servername 3.2.0-58-generic #88-ubuntu smp tue dec 3 17:37:58 utc 2013 x86_64 x86_64 x86_64 gnu/linuxディレクトリ権限の問題はありません...すべてはユーザーが所有しています。私は完全に途方に暮れています。私はdrush 5、6、7を試しました-それぞれに同じ種類のエラーがあります。サーバーはubuntu 12.04.2 ltsを実行しています
回答: drushエイリアスを介してリモートコンピューターでdrushコマンドを実行すると、同じエラーが発生しました。私は同じdrushコマンドをリモートシステムで問題なく直接実行できましたが、drushエイリアス(@remotesystem)を介して実行しようとすると、このエラーが発生します。リモートシステムのデフォルトシェルのユーザーはbashではなくshであることがわかりました。 bash設定ファイル〜/ .bashrcには、drushの場所をパスに追加する行が含まれているため、〜/ .bashrcはbashによってのみshシェルから供給されないため、shシェルはdrushを見つけることができませんでした。 docs.drush.orgのdrushインストール手順 状態: 次に、エクスポートを配置して、drushをシステムパスに追加します。 path = "$ home/.composer/vendor/bin:$ path" 〜/ .bash_profile(mac osユーザー)または 〜/ .bashrc (linuxユーザー)。 次のコマンドを実行すると、現在のシェルが何に設定されているかを確認できます。 エクスポート| grepシェル次のように、現在のシェルを含む行を出力します。-x shell = "/ bin/bash"を宣言しますubuntuでは、デフォルトのシェルはshですが、デフォルトのユーザーシェルはbashです。これはubuntuサーバーのインストールで発生しました(guiなし)。これを修正するには、デフォルトのシェルをbashに変更します。現在のユーザーの場合、次のコマンドを実行してデフォルトのシェルを変更します。sudo -u <username> chsh -s /bin/bash 今後のユーザーのために、useraddを使用する場合は、/ etc/default/useraddスケルトンファイルを編集してください(ただし、バックアップを作成することを忘れないでください)。行を変更します。shell =/bin/shにshell =/bin/bashこれにより、作成された新しいユーザーのシェルとしてbashが設定されます。