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:
1 parent
06ad67f8f5
commit
906da69481
1 file changed
+5
-1
+5
-1
@@ -15,7 +15,11 @@
|
|||||||
# Platte und startet sich von dort neu. Ab da ist stdin frei und apt kann
|
# 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.
|
# 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
|
# Das Skript wird NICHT per `cat` von stdin kopiert: die Shell liest stdin
|
||||||
# blockweise und hat den Anfang bereits gepuffert — `cat` bekaeme nur den
|
# blockweise und hat den Anfang bereits gepuffert — `cat` bekaeme nur den
|
||||||
# Rest und die Kopie waere unvollstaendig. Stattdessen frisch von der Quelle
|
# Rest und die Kopie waere unvollstaendig. Stattdessen frisch von der Quelle
|
||||||
|
|||||||
Reference in new issue
Block a user