使用envvariablesprepend命令 – 包括子命令

我需要将一个环境variables添加到Laravel的php artisan migrate命令中,以便与docker一起使用,例如:

 env DB_HOST=127.0.0.1 php artisan migrate 

我在我的.zshrc文件中创build了一个函数,如下所示:

 function migrate() { (env DB_HOST=127.0.0.1 php artisan migrate $*) } 

然而,Laravel的指挥结构的工作方式是这样的:

  migrate migrate:install Create the migration repository migrate:refresh Reset and re-run all migrations migrate:reset Rollback all database migrations migrate:rollback Rollback the last database migration migrate:status Show the status of each migration 

所以这不适用于这样的命令:

 migrate:refresh --seed 

有没有一种方法可以编写函数,也为所有这些“子”命令添加variables?

我假设你想能够做到这一点: migrate refresh --seed ,然后

 migrate() { local subcommand=$1 shift env DB_HOST=127.0.0.1 php artisan migrate:"$subcommand" "${@}") } 

嗯,也许

 artisan() { env DB_HOST=127.0.0.1 php artisan "${@}") } for subcommand in \ migrate \ migrate:install \ migrate:refresh \ migrate:reset \ migrate:rollback \ migrate:status do alias $subcommand="artisan $subcommand" done 

这会让你免费的一些标签完成。

 artisan() { env DB_HOST=127.0.0.1 \ php artisan "${@}" } 

Laravel + Docker用户的通用函数可以灵活地更新环境variables,以便与docker容器外的artisan一起使用。

感谢@ glenn-jackman指点我正确的方向!