Drush muestra el error: Admite bash para soportar 'source' con respaldo en $0 si esto no se ejecuta con bash
Tengo una gran cantidad de configuraciones y normalmente ejecuto la importación de configuración con php -d memory_limit=-1
(para desactivar el límite de memoria de PHP):
php -d memory_limit=-1 ./vendor/bin/drush config-import -y
Pero esta vez obtuve un error:
# Soporta bash para admitir `source` con respaldo en $0 si esto no se ejecuta con 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 en Cygwin usando php de Windows, así que la ruta debe ser traducida
dir=$(cygpath -m "$dir");
;;
esac
fi
export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"
# Si bash está incluyendo este archivo, también debemos incluir el destino
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
if [ "$bashSource" != "$0" ]; then
source "${dir}/drush" "$@"
return
fi
fi
"${dir}/drush" "$@"
Puedes evitar este error si pasas memory_limit=-1
como opción de php:
./vendor/bin/drush --php-options='-d memory_limit=-1' config-import -y
¿Por qué php -d memory_limit=-1 vendor/bin/drush …
ahora falla?
Al forzar el archivo a través de php
, le indicas al intérprete de PHP que analice un script bash:
php -d memory_limit=-1 ./vendor/bin/drush status
PHP, obedientemente, intenta ejecutar la primera línea que no es PHP (# Soporta bash …
) e inmediatamente falla, mostrando el código fuente del wrapper en pantalla. Exactamente ese es el resultado que has pegado. Este cambio fue introducido en Drush 13.3 y se discute en el issue upstream “Running drush as php script fails after updating from 13.2.0”