fix(installer): Re-Exec nur bei echter Pipe ([ -p /dev/stdin ])

Bei `sh install.sh` oder `< eingabe` ist stdin eine Datei — dort kann kein
Unterbefehl das Skript wegfressen. Der Re-Exec war dort unnoetig und kostete
einen Download. Nur `curl … | sh` (echte Pipe) braucht den Neustart.
This commit is contained in:
mm committed 2026-09-14 10:21:57 +02:00
1 parent 06ad67f8f5
commit 906da69481
1 file changed
+5 -1
+5 -1
View File
@@ -15,7 +15,11 @@
# Platte und startet sich von dort neu. Ab da ist stdin frei und apt kann
# nichts mehr verschlucken. Idempotent: der Neustart setzt die Marker-Variable.
# ============================================================================
if [ -z "${NETBIRD_TG_REEXEC:-}" ] && [ ! -t 0 ]; then
# Nur bei einer ECHTEN PIPE (curl … | sh) neu starten. Bei `sh install.sh`
# oder `sh install.sh < eingabe` ist stdin eine Datei — dort kann kein
# Unterbefehl das Skript wegfressen, und der Re-Exec waere nur ein
# unnoetiger Download.
if [ -z "${NETBIRD_TG_REEXEC:-}" ] && [ ! -t 0 ] && [ -p /dev/stdin ]; then
# Das Skript wird NICHT per `cat` von stdin kopiert: die Shell liest stdin
# blockweise und hat den Anfang bereits gepuffert — `cat` bekaeme nur den
# Rest und die Kopie waere unvollstaendig. Stattdessen frisch von der Quelle