Drush zeigt Fehler: Unterstützen Sie bash, um 'source' zu unterstützen, mit Rückgriff auf $0, falls dies nicht mit bash ausgeführt wird.
Ich habe eine große Anzahl von Konfigurationen und führe normalerweise den Config-Import mit php -d memory_limit=-1
aus (um das PHP-Speicherlimit zu deaktivieren):
php -d memory_limit=-1 ./vendor/bin/drush config-import -y
Aber dieses Mal erhielt ich einen Fehler:
# Unterstützt bash, um 'source' zu ermöglichen, mit Rückgriff auf $0, falls dies nicht mit bash ausgeführt wird
# 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)/*)
# Wir sind in Cygwin und verwenden Windows-PHP, daher muss der Pfad übersetzt werden
dir=$(cygpath -m "$dir");
;;
esac
fi
export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"
# Wenn bash diese Datei sourced, müssen wir auch das Ziel sourcen
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
if [ "$bashSource" != "$0" ]; then
source "${dir}/drush" "$@"
return
fi
fi
"${dir}/drush" "$@"
Sie können diesen Fehler vermeiden, wenn Sie memory_limit=-1
als php-options übergeben:
./vendor/bin/drush --php-options='-d memory_limit=-1' config-import -y
Warum php -d memory_limit=-1 vendor/bin/drush …
jetzt fehlschlägt
Wenn Sie die Datei direkt durch php
ausführen, weisen Sie den PHP-Interpreter an, ein Bash-Skript zu parsen:
php -d memory_limit=-1 ./vendor/bin/drush status
PHP versucht dann, die erste Nicht-PHP-Zeile (# Unterstützt bash …
) auszuführen, und bricht sofort ab, wobei der Quelltext des Wrappers ausgegeben wird. Genau das ist die Ausgabe, die Sie gesehen haben. Die Änderung wurde in Drush 13.3 eingeführt und im Upstream-Issue „Running drush as php script fails after updating from 13.2.0“ diskutiert.