main.go | 3 +++ run.go | 4 +++- diff --git a/main.go b/main.go index 9bd7766cd3820cf6e65360bd2ae3d4dd6ddabfcbe657d41b357d8aa50ccebfb6..9c10a756afab17ce0257251ea035ba07dd881753193023455d1624d03161bad4 100644 --- a/main.go +++ b/main.go @@ -223,6 +223,9 @@ InodeTrust = InodeTrustMtime default: log.Fatalln("unknown", EnvInodeTrust, "value") } + if os.Getenv(EnvShell) != "" { + Shell = os.Getenv(EnvShell) + } // Those are internal envs FdOODTgts, err = os.CreateTemp("", "ood-tgts") diff --git a/run.go b/run.go index 3f19556907a36c2fb4191934a60491edc95b2e77c016d4fbc7caf6c90b9a992f..8ab764c0a8c3d369a74d2632213bf09922bcd655fecf375a2b606a12de2b7669 100644 --- a/run.go +++ b/run.go @@ -54,6 +54,7 @@ EnvStderrKeep = "REDO_LOGS" EnvStderrSilent = "REDO_SILENT" EnvNoSync = "REDO_NO_SYNC" EnvStopIfMod = "REDO_STOP_IF_MODIFIED" + EnvShell = "REDO_SHELL" RedoDir = ".redo" LockSuffix = ".lock" @@ -72,6 +73,7 @@ StopIfMod = false Jobs sync.WaitGroup TmpsToClean = make(map[string]struct{}) TmpsToCleanM sync.Mutex + Shell = "/bin/sh" flagTrace *bool flagTraceAll *bool @@ -391,7 +393,7 @@ if err = unix.Access(doFile.a, unix.X_OK); err == nil { cmdName = doFile.a args = make([]string, 0, 3) } else { - cmdName = "/bin/sh" + cmdName = Shell if traced || TracedAll { args = append(args, "-ex") } else {