it-swarm-ja.com

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を実行しています

7
jmking

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が設定されます。

4
frederickjh

$ PATHがDrushの場所へのパスを提供していないため、Drushが見つからないため、エラーenv: drush: No such file or directoryが発生します。別のシェルが使用されていることが原因であると認められている回答では、他にも考えられる原因と解決策があります。

たとえば、Drushエイリアスを介してリモートサイトでDrushを実行する場合、SSHとそのシェル接続の非インタラクティブな非ログインの性質に問題がある可能性があります... $ PATHが~/.bash_profileと定義されている場合ロードされない$ PATH定義を~/.bashrcに移動するがその場合の解決策になる可能性があります。

1
alec

私の問題は、非対話型シェルで.bashrcが完全に処理されなかったことが原因でした https://stackoverflow.com/a/941995/980921

1
andyg5000

私も抱えていたこの特定の問題を解決するには、次の例に示すようにdrush-aliases構成を指定するだけです。

$aliases['prod'] = array (
  'uri' => '...',
  'root' => '...',
  'remote-Host' => '...',
  'remote-user' => '...',
  'os' => '...',
  'path-aliases' => array(
    '%drush-script' => '/home/user/.composer/vendor/bin/drush', // <-- This is what you need
  ),
);

その後、drush cc drushを使用してキャッシュをクリアし、再試行する必要がある場合があります。

これでうまくいきました。

0
asiby

Dos行末が原因である可能性があります。 vimでこのファイル drush を編集し、- github の質問からの参照を使用して「:set ff = unix」を実行することで修正できます。

上記の解決策が機能しない場合は、これを試してください:

Sudo mkdir /var/mysql
Sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

さらに、drushを正常に使用するには、php.ini設定を調整する必要がある場合があります。 参照

0
rfegade

Drushへのパスが正しいことを確信している場合は、drushバイナリに実行権限を付与してみてください。

chmod a+x drush
0
Siva Epari

私の場合、drush crom vendorディレクトリを削除しました。

私のPATHには、drushの多くのインスタンスがありました。

0
Kristof