如何将Drush添加到PATH?

如何将Drush添加到PATH?

在带有 Bash、MariaDB 和 PHP 8.1 的 CentOS 上,我使用 Drush。
Drush 是内容管理系统 Drupal 的命令行。

每次我运行 Drush 命令时,我都会这样写:

cd /home/www/example_1.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild

或者

cd /home/www/example_2.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild

我怎样才能PATH不再需要vendor/binDrush 命令?

export PATH=$PATH:vendor/bin

这是要走的路吗?

答案1

一种解决方法(也许有更好的方法)是在$PATH每次收到 shell 提示时进行更新,这可以通过使用PROMPT_COMMAND环境变量(在bash)中实现。

所以你可以定义一个这样的函数:


#You can modify this function to update the path
#only when the current directory is under '/home/www/website_folder'

checkPath() { 

if [[ -z $OLDPATH ]]; then  
  OLDPATH="$PATH";  
  PATH="${PATH}:${PWD}/vendor/bin"; 
else 
  PATH="${OLDPATH}:${PWD}/vendor/bin"
fi 

}

if 条件可防止每次运行命令时添加新路径。所以你将永远拥有你的原始$PATH+工作目录在$PWD/vendor/bin哪里$PWD

并在你的 shell 中设置:

PROMPT_COMMAND='checkPath'

每次收到 shell 提示时都使用上面的代码(当命令完成执行时,PROMPT_COMMAND将执行内容(在本例中为 checkPath 函数))。

所以如果你输入:

cd /home/www/example_1.com

将会$PATH有:

/home/www/example_1.com/vendor/bin

当你改为example_2.com这样时:

cd /home/www/example_2.com 
#or 
cd ../example_2.com

将会$PATH有:

/home/www/example_2.com/vendor/bin

坏处

使用此解决方法可能很有用,但如果更改为诸如 之类的目录,/home/www$PATH具有以下值:

/home/www/vendor/bin

正如您所看到的,$PATH 可能有一个不存在的目录,但据我所知这不会对您的 shell 产生问题,请记住 PATH 每次都会更改(当您光盘到另一个目录)。如果/home/www/vendor/bin存在,则该目录下的文件将被该PATH变量识别。


另外,如果您已drush在系统中全局安装(例如在)中,则提供的/usr/bin命令将不起作用。drush/home/www/example_?.com/vendor/bin/

解决这个问题的方法是在前面添加${PWD}/vendor/bin$PATH不是附加它:

checkPath() { 

if [[ -z $OLDPATH ]]; then  
  OLDPATH="$PATH";  
  PATH="${PWD}/vendor/bin:${PATH}"; 
else 
  PATH="${PWD}/vendor/bin:${OLDPATH}"
fi 

}

相关内容