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.