diff --git a/src/srun/srun.c b/src/srun/srun.c
index 679e9f79c7cd51ee80fd5647c524d93c327b6d63..22c8e3ab1fe83a6c07e807e13aecc5b9879e2c57 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -104,13 +104,13 @@
  * forward declaration of static funcs
  */
 static void  _print_job_information(resource_allocation_response_msg_t *resp);
-static char *_build_script (char *pathname, int file_type);
+static char *_build_script (const char *argv0, char *pathname, int file_type);
 static char *_get_shell (void);
 static void  _send_options(const int argc, char **argv);
 static void  _get_options (const char *buffer);
 static char *_get_token(char *buf_ptr);
 static int   _is_file_text (char *, char**);
-static int   _run_batch_job (void);
+static int   _run_batch_job (const char *argv0);
 static int   _run_job_script(srun_job_t *job, env_t *env);
 static void  _set_prio_process_env(void);
 static int   _set_rlimit_env(void);
@@ -206,7 +206,7 @@ int srun(int ac, char **av)
 		env->mem_bind = opt.mem_bind;
 		setup_env(env);
 
-		if (_run_batch_job() < 0)
+		if (_run_batch_job(av[0]) < 0)
 			exit (1);
 		exit (0);
 
@@ -578,7 +578,7 @@ _print_job_information(resource_allocation_response_msg_t *resp)
 
 /* submit a batch job and return error code */
 static int
-_run_batch_job(void)
+_run_batch_job(const char *argv0)
 {
 	int file_type, retries;
 	int rc = SLURM_SUCCESS;
@@ -598,7 +598,8 @@ _run_batch_job(void)
 	 * }
 	 */
 
-	if ((script = _build_script (remote_argv[0], file_type)) == NULL) {
+	if ((script = _build_script (argv0, remote_argv[0], file_type))
+	    == NULL) {
 		error ("unable to build script from file %s", remote_argv[0]);
 		return SLURM_ERROR;
 	}
@@ -810,7 +811,7 @@ _is_file_text (char *fname, char **shell_ptr)
 
 /* allocate and build a string containing a script for a batch job */
 static char *
-_build_script (char *fname, int file_type)
+_build_script (const char *argv0, char *fname, int file_type)
 {
 	cbuf_t cb = cbuf_create(512, 1048576);
 	int   fd     = -1;
@@ -827,7 +828,7 @@ _build_script (char *fname, int file_type)
 	if (file_type != TYPE_SCRIPT) {
 		xstrfmtcat(buffer, "#!%s\n", _get_shell());
 		if (file_type == 0) {
-			xstrcat(buffer, "srun ");
+			xstrfmtcat(buffer, "%s ", argv0); /* path to srun */
 			for (i = 0; i < remote_argc; i++)
 				xstrfmtcat(buffer, "%s ", remote_argv[i]);
 			xstrcatchar(buffer, '\n');