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?