diff --git a/src/srun/allocate.c b/src/srun/allocate.c
index e8b84da1ada23078a15827bced0d51f4584891d4..cfb4e8e456389dd3ca2a9fc4db6ef774046cb1a1 100644
--- a/src/srun/allocate.c
+++ b/src/srun/allocate.c
@@ -501,8 +501,10 @@ job_desc_msg_create_from_opts (char *script)
 
 		if (opt.overcommit)
 			putenv("SLURM_OVERCOMMIT=1");
-		xstrfmtcat(buf, "SLURM_NPROCS=%d", opt.nprocs);
-		putenv(buf);
+		if (opt.nprocs_set) {
+			xstrfmtcat(buf, "SLURM_NPROCS=%d", opt.nprocs);
+			putenv(buf);
+		}
 
 		j->environment = environ;
 		j->env_size = envcount (environ);