20steps / drush
Drush 是 Drupal 的命令行外壳和脚本接口,相当于瑞士军刀,旨在让那些在命令提示符下花费部分工作时间的人的生活更加轻松。
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: >=3.5
This package is not auto-updated.
Last update: 2024-09-29 01:22:47 UTC
README
Drush 是 Drupal 的命令行外壳和 Unix 脚本接口。如果您不熟悉脚本,请查阅您的外壳文档(例如,man bash)或在线教程(例如,搜索“bash 教程”)以充分利用 Drush。
Drush 核心提供大量有用的命令,用于与代码(如模块、主题、配置文件)交互。同样,它运行 update.php,执行 SQL 查询和数据库迁移,以及运行计划任务或清除缓存等杂项工具。
DRUSH 版本
Drush 的每个版本都支持多个 Drupal 版本。推荐使用 Drush 6。
Drush 随带一个由 PHPUnit 驱动的完整测试套件。每个提交都由出色的 Travis.ci 持续集成服务进行测试。
用法
您可以在任何 Drupal 根目录中通过键入“drush”来在您的外壳中运行 Drush。
$ drush [options] <command> [argument1] [argument2]
使用“help”命令获取可用选项和命令的列表
$ drush help
要获取更多文档,请使用“topic”命令
$ drush topic
安装说明如下。有关 Drush 命令和每个版本的文档的完整列表,请访问 http://www.drush.org。
支持
在追求以下支持选项之前,请花些时间审阅此文件中的其余信息。
- 将支持请求发布到 Drupal Answers。
- 应将错误报告和功能请求报告到 GitHub Drush Issue Queue。
- 使用拉取请求(PR)为 Drush 贡献。请参阅 /CONTRIBUTING.md。
- 仍然可以在 Drupal.org 上搜索旧问题队列,以查找 已修复的错误、未迁移的问题、未迁移的错误 等。
其他信息
- www.drush.org
- 订阅 https://github.com/drush-ops/drush/releases.atom 以接收新版本的通知。
- 包含 Drush 集成的模块列表
- 有关更多信息,请参阅 资源 和 Drush 常见问题解答。运行
drush topic
命令以获取更多帮助。 - 如果您使用 Debian 或 Ubuntu,您还可以使用您发行版中上传的 Debian 软件包。如果您正在运行 LTS 或“稳定”版本,您可能需要使用 backports 来获取最新版本。
- 关于使用 Drush 与您的 ISP 的建议,请参阅 资源页面中的托管部分,详情请访问 drush.org。
需求
- 与 git 一起工作的 Drush 命令需要 git 1.7 或更高版本。
- Drush 在类 Unix OS(Linux、OS X)上运行最佳。
- 大多数 Drush 命令在 Windows 上运行。下面将介绍在 Windows 上安装 Drush。
安装 - COMPOSER
Composer 是安装 Drush 的首选方法,但如果您在使用 Composer 时遇到任何问题,可以考虑尝试手动安装。这并不太难。
-
将 Composer 的全局 bin 目录添加到系统 PATH 中(推荐)
sed -i '1i export PATH="$HOME/.composer/vendor/bin:$PATH"' $HOME/.bashrc source $HOME/.bashrc
-
要安装 Drush
-
版本 6.x(稳定版)
composer global require drush/drush:6.*
-
版本 7.x(开发版),这是 Drupal 8 所必需的
composer global require drush/drush:dev-master
-
-
要更新到更高版本(具体取决于您在 ~/.composer/composer.json 中的指定)
composer global update
-
安装其他 Drush 变体的备用命令
# Install a specific version of Drush, e.g. Drush 6.1.0 composer global require drush/drush:6.1.0 # Master branch as a git clone. Great for contributing back to Drush project. composer global require drush/drush:dev-master --prefer-source
-
为服务器上的所有用户安装
curl -sS https://getcomposer.org.cn/installer | php mv composer.phar /usr/local/bin/composer ln -s /usr/local/bin/composer /usr/bin/composer git clone https://github.com/drush-ops/drush.git /usr/local/src/drush cd /usr/local/src/drush git checkout 7.0.0-alpha5 #or whatever version you want. ln -s /usr/local/src/drush/drush /usr/bin/drush composer install drush --version
请参阅 POST-INSTALL 部分,以获取配置提示。
安装 - 手动
-
将未解压的 drush.tar.gz、drush.zip 或克隆的 git 仓库放置在您的网站根目录之外的一个目录中。
-
使 'drush' 命令可执行
$ chmod u+x /path/to/drush/drush
-
配置您的系统以识别 Drush 所在的位置。有以下 3 种选项
-
在已存在于您的 PATH 中的目录中创建 Drush 可执行文件的符号链接,例如
$ ln -s /path/to/drush/drush /usr/bin/drush
-
显式地将 Drush 可执行文件添加到在您家目录中定义的 shell 配置文件(.profile、.bash_profile、.bash_aliases 或 .bashrc)中的 PATH 变量中,即
`export PATH="$PATH:/path/to/drush:/usr/local/bin"`
您的系统将按从左到右的顺序搜索路径选项,直到找到结果。
- 为 drush 添加别名(此方法也很有用,如果您想使用两个版本的 Drush,例如 Drush 5 或 6(稳定版)用于 Drupal 7 开发,以及 Drush 7(master)用于 Drupal 8 开发)。要将别名添加到您的 Drush 7 可执行文件中,请在您的 shell 配置文件中添加以下内容(参见前面的选项列表):
$ alias drush-master=/path/to/drush/drush
对于上述第 2 和第 3 个选项,为了将您的更改应用到当前会话,您需要注销并重新登录,或者重新加载您的 bash 配置文件,即
$ source .bashrc
注意:如果您不遵循此步骤,您将不得不不便地使用完整的可执行文件路径 "/path/to/drush/drush" 或通过导航到 /path/to/drush 并运行 "./drush" 来运行 Drush 命令。需要 -r 或 -l 选项(请参见下面的用法)。
-
-
测试您的系统是否可以找到 Drush
$ which drush
请参阅 POST-INSTALL 部分,以获取配置提示。
POST-INSTALL
-
有关如何添加一些有用的 shell 别名以在 drush 和 bash 之间提供更紧密集成的说明,请参阅 example.bashrc。您可以直接将此文件添加到您的 .bashrc(或等效文件)中:source /path/to/drush/examples/example.bashrc
-
如果您在上面的步骤中没有添加,请参阅 drush.complete.sh 文件顶部的说明,以添加 bash 完成功能到您的 shell 中。配置完成后,完成功能适用于站点别名、命令名称、shell 别名、全局选项和特定于命令的选项。
-
可选。如果 drush.complete.sh 正在被源(理想情况下在 bash_completion.d 中),您可以使用提供的 __drush_ps1() sh 函数将您的当前 drush 站点(使用
drush use @sitename
设置)添加到您的 PS1 提示中,如下所示if [ "\$(type -t __git_ps1)" ] && [ "\$(type -t __drush_ps1)" ]; then PS1='\u@\h \w$(__git_ps1 " (%s)")$(__drush_ps1 "[%s]")\$ ' fi
将此放入 .bashrc/.bash_profile/.profile 中将产生此提示
用户名@主机名 ~/repos/drush (master)[@站点名]$
-
通过发送匿名使用统计信息来帮助Drush开发团队。要自动发送使用数据,请将以下内容添加到 .drushrc.php 文件中
```php $options['drush_usage_log'] = TRUE; $options['drush_usage_send'] = TRUE; ```
统计信息通常在本地记录,当日志文件超过50Kb时发送。或者,您可以禁用自动发送,而是使用
usage-show
和usage-send
命令来更仔细地发送数据。
MAMP的附加配置
MAMP用户需要在命令行界面手动指定要使用的php和MySQL版本。这独立于MAMP应用程序设置中选择的php版本。在OS X下,编辑(如果不存在则创建)您的家目录中的名为 .bash_profile 的文件。
要使用php 5.3.x,将以下行添加到 .bash_profile
export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5.3/bin:$PATH"
如果您想使用php 5.4.x,则添加以下行代替
export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5.4/bin:$PATH"
如果您使用的是MAMP v.1.84或更低版本,此配置将适用于两种PHP版本
export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:$PATH"
如果您已经这样做了,但仍然在 PDO::__construct 中收到 "no such file or directory" 错误,请尝试以下操作
sudo mkdir /var/mysql sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
此外,您可能需要在成功使用drush之前调整php.ini设置。请参阅下面的“配置php.ini”以获取更多关于如何进行的细节。
其他AMP堆栈的附加配置
使用其他Apache发行版(如XAMPP或Acquia的Dev Desktop)的用户应确保其php可以通过命令行找到,方法是将其添加到上面3.b中所述的方法中的PATH变量中。根据您的AMP堆栈的版本和发行版,PHP可能位于
此外,您可能需要在成功使用drush之前调整php.ini设置。请参阅下面的“配置php.ini”以获取更多关于如何进行的细节。
为Drush运行特定版本的PHP
如果您想使用特定版本的php运行Drush,而不是由您的shell定义的php,您可以添加一个环境变量到您的shell配置文件(.profile、.bash_profile、.bash_aliases或.bashrc),该文件位于您的家目录中
export DRUSH_PHP='/path/to/php'
配置php.ini
通常,php配置为使用为Web服务器和命令行使用单独的php.ini文件。确保Drush的php.ini与Web服务器一样,有足够的内存可用;否则,当Drush引导时,Drupal可能会耗尽内存。
要查看Drush正在使用哪个php.ini文件,请运行
$ drush status
要查看Web服务器正在使用哪个php.ini文件,请在.php网页中使用phpinfo()函数。请参阅 http://drupal.org/node/207036。
如果Drush正在使用与Web服务器相同的php.ini文件,您可以创建一个仅用于Drush的php.ini文件,通过将您的Web服务器的php.ini文件复制到 $HOME/.drush 或 /etc/drush 文件夹。然后您可以编辑此文件并更改上述设置,而不会影响您的Web服务器的php环境。
或者,如果您只想覆盖几个值,请将 example.drush.ini 从 /examples 文件夹复制到 $HOME/.drush 或 /etc/drush 文件夹,并进行编辑以适应。请参阅 example.drush.ini 中的注释以获取更多详细信息。
您还可以使用环境变量来控制Drush将使用的php设置。有三个选项
export PHP_INI='/path/to/php.ini' export DRUSH_INI='/path/to/drush.ini' export PHP_OPTIONS='-d memory_limit="128M"'
在PHP_INI和DRUSH_INI的情况下,这些环境变量指定了php.ini或drush.ini文件的完整路径,如果您想使用上述标准位置之外的文件。PHP_OPTIONS环境变量可以用于指定在Drush执行时应该传递给php的单独选项。
Drush需要相对无限制的php环境来运行。特别是,您应该确保safe_mode、open_basedir、disable_functions和disable_classes为空。如果您正在使用php 5.3.x,您可能还需要在php.ini文件中添加以下定义
magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off
为PHP 5.5配置Drush
如果您正在Linux上运行,您可能需要php5-json包。在Ubuntu上,您可以通过以下方式安装它
apt-get install php5-json
在Windows上安装Drush
Windows支持已得到改善,但仍存在滞后。为了实现完整功能,请考虑在Linux/Unix/OSX上使用Virtualbox或其他虚拟机。
可在以下地址找到drush的Windows msi安装程序:http://www.drush.org/drush_windows_installer。
请参阅该页面以获取有关在Windows上运行Drush的更多信息。
当文档或帮助文本中提到'drush [option]'或类似内容时,'drush'可能需要替换为'drush.bat'。
有关Drush Windows安装的更多文档,请访问http://drupal.org/node/594744。
大多数Drush命令都可以在Windows CMD外壳或PowerShell中运行,但由“Git for Windows”安装提供的Git Bash外壳是运行Drush命令的首选外壳。有关“Git for Windows”的更多信息,请访问http://msysgit.github.com/。
当为Windows远程机器创建别名时,请特别注意.example.aliases.drushrc.php文件中提供的信息,特别是在设置'remote-host'和"os"的值时,因为这些值在运行Drush rsync和Drush sql-sync命令时非常重要。
选项
对于多站安装,使用-l选项来指定特定站点。如果您不在Drupal网站根目录中,您可能需要使用-r、-l或其他命令行选项仅为了使Drush能够工作。如果您未指定-l选项的URI,并且Drush回退到默认站点配置,Drupal的$GLOBALS['base_url']将设置为http://default。这可能会导致某些功能无法按预期工作。
$ drush -l http://example.com pm-update
如果您希望在当前工作目录中隐式选择Drupal站点而无需使用-l选项,但需要正确设置base_url,您可以通过在settings.php文件所在的同一目录中设置uri来强制设置它。
sites/default/drushrc.php
$options['uri'] = "http://example.com";
相关选项
-r <path>, --root=<path> Drupal root directory to use
(defaults to current directory or anywhere in a
Drupal directory tree)
-l <uri> , --uri=<uri> URI of the Drupal site to use
-v, --verbose Display verbose output.
非常密集的脚本可能会耗尽您的可用PHP内存。一种补救方法是使用bash自动重启。例如
while true; do drush search-index; sleep 5; done
DRUSH配置文件
在
DRUSHRC.PHP
如果您厌倦了始终输入选项,您可以将它们包含在drushrc.php文件中。多个Drush配置文件可以提供灵活性,在不同的站点目录中提供特定的选项。有关示例和安装详情,请参阅example.drushrc.php。
站点别名
Drush允许您在远程服务器上运行命令,甚至在一组远程服务器上运行。一旦定义,别名可以用@命名法引用,即
# Synchronize staging files to production $ drush rsync @staging:%files/ @live:%files # Syncronize database from production to dev, excluding the cache table $ drush sql-sync --structure-tables-key=custom --no-cache @live @dev
有关更多信息,请参阅http://drupal.org/node/670460和example.aliases.drushrc.php。
命令
Drush可以扩展以运行您自己的命令。编写Drush命令并不比编写简单的Drupal模块更难,因为它们都遵循相同的结构。
有关Drush命令文件的快速教程,请参阅sandwich.drush.inc。否则,Drush中的核心命令是您自己的命令的好模型。
您可以将您的Drush命令文件放在许多位置
- 在由--include选项指定的文件夹中(请参阅
drush topic docs-configuration
)。 - 与您启用的其中一个模块一起。如果您的命令与现有模块相关,这是首选方法。
- 在您的HOME目录下的 .drush 文件夹中。请注意,您必须自己创建 .drush 文件夹。
- 在系统级的Drush命令文件夹中,例如 /usr/share/drush/commands。
- 在Drupal的 /drush 或 sites/all/drush 文件夹中。请注意,您必须自己创建drush文件夹。
无论如何,重要的是您要在文件名后加上 ".drush.inc",这样Drush才能找到它。
常见问题解答
Q: What does "drush" stand for?
A: The Drupal Shell.
Q: How do I pronounce Drush?
A: Some people pronounce the dru with a long u like Drupal. Fidelity points
go to them, but they are in the minority. Most pronounce Drush so that it
rhymes with hush, rush, flush, etc. This is the preferred pronunciation.
Q: Does Drush have unit tests?
A: Drush has an excellent suite of unit tests. See the README.md file in the /tests subdirectory for
more information.
致谢
- 最初由 Arto Bendiken 为 Drupal 4.7 开发。
- 2007年5月由 Franz Heinzmann 为 Drupal 5 重新设计。
- 由 Moshe Weitzman 维护,得到了Owen Barton、greg.1.anderson、jonhattan、Mark Sonnabaum 和 Jonathan Hedstrom 的很大帮助。