code: static Process execShellScript(
              final Logger logger,
              final File workingdir,
              final File scriptfile,
              final String scriptargs,
              final String[] scriptargsarr,
              final Map<String, Map<String, String>> envContext,
              final Map<String, Map<String, String>> newDataContext,
              final String interpreter,
              final String logName,
              final boolean interpreterArgsQuoted
      ) throws IOException {
  
          final ProcessBuilder processBuilder = buildProcess(workingdir, scriptfile, scriptargs, scriptargsarr, envContext,
                                                             newDataContext, interpreter, interpreterArgsQuoted);
          logger.info("[" + logName + "] executing: " + processBuilder.command());
          return processBuilder.start();
      }
docs: Execute a process by invoking a specified shell command and passing the arguments to the shell.
  
  @param logger         logger
  @param workingdir     working dir
  @param scriptfile     file
  @param scriptargs     arguments to the shell
  @param scriptargsarr
  @param envContext     Environment variable context
  @param newDataContext context data to replace in the scriptargs
  @param interpreter    the remote shell script, which will be split on whitespace
  @param logName        name of plugin to use in logging
  @param interpreterArgsQuoted if true, quote the file+args as a single argument to the interpreter
  @return process
  @throws IOException on io error