From 906da69481d71aaf26e9188b321b54325ec7ddb7 Mon Sep 17 00:00:00 2001 From: mm Date: Mon, 14 Sep 2026 10:21:57 +0200 Subject: [PATCH] fix(installer): Re-Exec nur bei echter Pipe ([ -p /dev/stdin ]) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- install.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index c70db52..49f75ca 100755 --- a/install.sh +++ b/install.sh @@ -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