Warum funktioniert der Befehl source nicht mit der Prozessersetzung in Bash 3.2?

Ich habe das folgende Shell-Skript:

cat <(echo foo)
source <(echo bar=bar)
echo $bar

In GNU Bash 3.2 und 4.3 funktioniert dies jedoch anders:

$ /bin/bash foo.sh 
foo

3.2.53(1)-release

$ /usr/local/bin/bash foo.sh 
foo
bar
4.3.33(1)-release

Warum funktioniert das nur auf einer Version? Ist es ein Fehler oder eine hinzugefügte Funktion?

Es scheint, dass die Prozessersetzung gut funktioniert, jedoch lag das Problem bei der Beschaffung der Datei.

Wenn dies das erwartete Verhalten ist, welche andere Syntax sollte ich stattdessen verwenden, umsource etwas von der Standardeingabe zwischen verschiedenen Bash-Versionen kompatibel sein?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage