Drush mostra um erro: suporte do bash a 'source' usando $0 como alternativa caso não seja executado via bash
Tenho uma enorme quantidade de configurações e normalmente executo a importação de configuração com php -d memory_limit=-1 (desativar o limite de memória do PHP):
php -d memory_limit=-1 ./vendor/bin/drush config-import -y
Mas, desta vez, recebi um erro:
# Suporte do bash para trabalhar com `source`, usando $0 como alternativa caso o script não seja executado via bash
# https://stackoverflow.com/a/35006505/6512
selfArg="$BASH_SOURCE"
if [ -z "$selfArg" ]; then
selfArg="$0"
fi
self=$(realpath $selfArg 2> /dev/null)
if [ -z "$self" ]; then
self="$selfArg"
fi
dir=$(cd "${self%[/\\]*}" > /dev/null; cd ../drush/drush && pwd)
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# Estamos no Cygwin, usando o php do Windows, então o caminho precisa ser convertido
dir=$(cygpath -m "$dir");
;;
esac
fi
export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"
# Se o bash carregar este arquivo via source, é preciso carregar também o script de destino
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
if [ "$bashSource" != "$0" ]; then
source "${dir}/drush" "$@"
return
fi
fi
"${dir}/drush" "$@"
Esse erro pode ser evitado passando memory_limit=-1 por meio de php-options:
./vendor/bin/drush --php-options='-d memory_limit=-1' config-import -y
Por que php -d memory_limit=-1 vendor/bin/drush … agora gera um erro
Quando você executa explicitamente o arquivo por meio do php, você diz ao interpretador PHP para executar um script bash:
php -d memory_limit=-1 ./vendor/bin/drush status
O PHP tenta obedientemente executar a primeira linha não-PHP (# Suporte do bash …) e falha imediatamente, exibindo na tela o código-fonte do wrapper. É exatamente essa a saída que você obteve. Essa mudança foi introduzida no Drush 13.3 e é discutida na issue de upstream “Running drush as php script fails after updating from 13.2.0”