A small wrapper around Drush for your global $PATH.
In order to avoid dependency issues, it is best to require Drush on a per-project basis via Composer (
composer require drush/drush). This makes Drush available to your project by placing it at
However, it is inconvenient to type
vendor/bin/drush in order to execute Drush commands. By installing the drush launcher globally on your local machine, you can simply type
drush on the command line, and the launcher will find and execute the project specific version of drush located in your project's
Installation - Phar
Download latest stable release via CLI (code below) or browse to https://github.com/drush-ops/drush-launcher/releases/latest.
curl -OL https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
Make downloaded file executable:
chmod +x drush.phar
Move drush.phar to a location listed in your
$PATH, rename to
sudo mv drush.phar /usr/local/bin/drush
Windows users: create a drush.bat file in the same folder as drush.phar with the following lines. This gets around the problem where Windows does not know that .phar files are associated with
@echo off php "%~dp0\drush.phar" %*
The Drush Launcher Phar is able to self update to the latest release.
If you only have one codebase on your system (typical with VMs, Docker, etc,), you should add
/path/to/vendor/bin to your $PATH. Drush9 is smart enough to find the PROJECT_ROOT and DRUPAL_ROOT when it is run from the bin directory.
When a site-local Drush is not found, this launcher usually throws a helpful error. You may avoid the error and instead hand off execution to a global Drush (any version) by exporting an environment variable.
Drush Launcher, like Composer automatically disables Xdebug by default. This improves performance substantially. You may override this feature by setting an environment variable.
DRUSH_ALLOW_XDEBUG=1 drush [command]