X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=run.go;h=6a38d5abdf7b735e15beb7023ae43d459cf3e2d3;hb=a001f12e6aaf4ea0b068028a95c188af1f7925e9;hp=bb3604bf4ba29feb289bc834a66242c94b023782;hpb=c5123973b6ebfa2273f0ea3fa02aa35d329bae4d;p=goredo.git diff --git a/run.go b/run.go index bb3604b..6a38d5a 100644 --- a/run.go +++ b/run.go @@ -63,7 +63,7 @@ var ( StderrPrefix string Jobs sync.WaitGroup - flagTrace = flag.Bool("x", false, fmt.Sprintf("trace current target (sh -x) (set %s=1 for others too)", EnvTrace)) + flagTrace = flag.Bool("x", false, fmt.Sprintf("trace current target (sh -x) (set %s=1 for all others)", EnvTrace)) flagStderrKeep = flag.Bool("logs", false, fmt.Sprintf("keep job's stderr (%s=1)", EnvStderrKeep)) flagStderrSilent = flag.Bool("silent", false, fmt.Sprintf("do not print job's stderr (%s=1)", EnvStderrSilent)) ) @@ -303,39 +303,14 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { var cmdName string var args []string if err = unix.Access(doFilePath, unix.X_OK); err == nil { - // Ordinary executable file cmdName = doFilePath args = make([]string, 0, 3) } else { - fd, err := os.Open(doFilePath) - if err != nil { - cleanup() - return TgtErr{tgtOrig, err} - } - buf := make([]byte, 512) - n, err := fd.Read(buf) - if err != nil { - cleanup() - return TgtErr{tgtOrig, err} - } - if n > 3 && string(buf[:3]) == "#!/" { - // Shebanged - t := string(buf[2:n]) - nlIdx := strings.Index(t, "\n") - if nlIdx == -1 { - cleanup() - return TgtErr{tgtOrig, errors.New("not fully read shebang")} - } - args = strings.Split(t[:nlIdx], " ") - cmdName, args = args[0], args[1:] + cmdName = "/bin/sh" + if traced { + args = append(args, "-ex") } else { - // Shell - cmdName = "/bin/sh" - if traced { - args = append(args, "-ex") - } else { - args = append(args, "-e") - } + args = append(args, "-e") } args = append(args, doFile) }