diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
index 1890486..eb4208a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
@@ -306,6 +306,6 @@
   private PathFragment shellPath(Map<String, String> executionInfo) {
     // Use vanilla /bin/bash for actions running on mac machines.
     return executionInfo.containsKey("requires-darwin")
-        ? new PathFragment("/bin/bash") : ruleContext.getConfiguration().getShExecutable();
+        ? new PathFragment("/bin/bash") : ruleContext.getConfiguration().getShellExecutable();
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index 6e34e0f..988e1d8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -568,7 +568,7 @@
       Iterable<String> arguments = argumentsBuilder.build();
       // Check to see if we need to use param file.
       Artifact paramsFile = ParamFileHelper.getParamsFileMaybe(
-          buildExecutableArgs(configuration.getShExecutable()),
+          buildExecutableArgs(configuration.getShellExecutable()),
           arguments,
           commandLine,
           paramFileInfo,
@@ -589,7 +589,7 @@
           buildSpawnAction(
               owner,
               configuration.getLocalShellEnvironment(),
-              configuration.getShExecutable(),
+              configuration.getShellExecutable(),
               paramsFile,
               paramFileWriteAction));
       if (paramFileWriteAction != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 272582d..8f01d0d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -198,11 +198,13 @@
     }
 
     /**
-     * Add mappings from generally available tool names (like "sh") to their paths
-     * that actions can access.
+     * Returns the shell to be used.
+     *
+     * <p>Each configuration instance must have at most one fragment that returns non-null.
      */
     @SuppressWarnings("unused")
-    public void defineExecutables(ImmutableMap.Builder<String, PathFragment> builder) {
+    public PathFragment getShellExecutable() {
+      return null;
     }
 
     /**
@@ -1065,7 +1067,7 @@
   private final boolean actionsEnabled;
 
   // TODO(bazel-team): Move this to a configuration fragment.
-  private final PathFragment shExecutable;
+  private final PathFragment shellExecutable;
 
   /**
    * The global "make variables" such as "$(TARGET_CPU)"; these get applied to all rules analyzed in
@@ -1285,7 +1287,7 @@
         ? options.outputDirectoryName : mnemonic;
     this.platformName = buildPlatformName();
 
-    this.shExecutable = collectExecutables().get("sh");
+    this.shellExecutable = computeShellExecutable();
 
     this.outputRoots = outputRoots != null
         ? outputRoots
@@ -2066,8 +2068,8 @@
   /**
    * Returns the path to sh.
    */
-  public PathFragment getShExecutable() {
-    return shExecutable;
+  public PathFragment getShellExecutable() {
+    return shellExecutable;
   }
 
   /**
@@ -2366,12 +2368,17 @@
   /**
    * Collects executables defined by fragments.
    */
-  private ImmutableMap<String, PathFragment> collectExecutables() {
-    ImmutableMap.Builder<String, PathFragment> builder = new ImmutableMap.Builder<>();
+  private PathFragment computeShellExecutable() {
+    PathFragment result = null;
+
     for (Fragment fragment : fragments.values()) {
-      fragment.defineExecutables(builder);
+      if (fragment.getShellExecutable() != null) {
+        Verify.verify(result == null);
+        result = fragment.getShellExecutable();
+      }
     }
-    return builder.build();
+
+    return result;
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
index 5567f08..a09d9ba 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
@@ -56,26 +56,24 @@
   }
 
   @Override
-  public void defineExecutables(ImmutableMap.Builder<String, PathFragment> builder) {
+  public PathFragment getShellExecutable() {
     if (OS.getCurrent() == OS.WINDOWS) {
       String path = System.getenv("BAZEL_SH");
       if (path != null) {
-        builder.put("sh", new PathFragment(path));
+        return new PathFragment(path);
       } else {
-        builder.put("sh", new PathFragment("c:/tools/msys64/usr/bin/bash.exe"));
+        return new PathFragment("c:/tools/msys64/usr/bin/bash.exe");
       }
-      return;
     }
     if (OS.getCurrent() == OS.FREEBSD) {
       String path = System.getenv("BAZEL_SH");
       if (path != null) {
-        builder.put("sh", new PathFragment(path));
+        return  new PathFragment(path);
       } else {
-        builder.put("sh", new PathFragment("/usr/local/bin/bash"));
+        return new PathFragment("/usr/local/bin/bash");
       }
-      return;
     }
-    builder.put("sh", new PathFragment("/bin/bash"));
+    return new PathFragment("/bin/bash");
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
index bb4826e..db3ab65 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
@@ -411,7 +411,7 @@
 
       case DYNAMIC_LIBRARY:
         if (interfaceOutput != null) {
-          argv.add(configuration.getShExecutable().getPathString());
+          argv.add(configuration.getShellExecutable().getPathString());
           argv.add("-c");
           argv.add(
               "build_iface_so=\"$0\"; impl=\"$1\"; iface=\"$2\"; cmd=\"$3\"; shift 3; "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
index 19bfdb3..db3f583 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
@@ -549,7 +549,7 @@
   }
 
   public PathFragment getShExecutable() {
-    return configuration.getShExecutable();
+    return configuration.getShellExecutable();
   }
 
   public ImmutableMap<String, String> getLocalShellEnvironment() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
index ce9e08d..9e26dfd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
@@ -219,7 +219,7 @@
       args.addAll(execSettings.getRunUnder().getOptions());
       args.addAll(execArgs);
     } else {
-      args.add(testAction.getConfiguration().getShExecutable().getPathString());
+      args.add(testAction.getConfiguration().getShellExecutable().getPathString());
       args.add("-c");
 
       String runUnderCommand = ShellEscaper.escapeString(execSettings.getRunUnder().getCommand());
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 26dda27..ca2b04a 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -275,11 +275,11 @@
           runUnderValue += " " + ShellEscaper.escapeJoinAll(opts);
         }
       }
-      cmdLine.add(configuration.getShExecutable().getPathString());
+      cmdLine.add(configuration.getShellExecutable().getPathString());
       cmdLine.add("-c");
       cmdLine.add(runUnderValue + " " + executablePath.getPathString() + " " +
           ShellEscaper.escapeJoinAll(args));
-      prettyCmdLine.add(configuration.getShExecutable().getPathString());
+      prettyCmdLine.add(configuration.getShellExecutable().getPathString());
       prettyCmdLine.add("-c");
       prettyCmdLine.add(runUnderValue + " " + prettyExecutablePath.getPathString() + " " +
           ShellEscaper.escapeJoinAll(args));
