fix(builtin): consistently use env to locate bash

Fixes #3141
diff --git a/internal/node/node_patches.js b/internal/node/node_patches.js
index 7b13064..c806028 100644
--- a/internal/node/node_patches.js
+++ b/internal/node/node_patches.js
@@ -577,7 +577,7 @@
     else {
         const nodeEntry = path__default['default'].join(nodeDir, 'node');
         if (!fs__default['default'].existsSync(nodeEntry)) {
-            fs__default['default'].writeFileSync(nodeEntry, `#!/bin/bash
+            fs__default['default'].writeFileSync(nodeEntry, `#!/usr/bin/env bash
 export NP_SUBPROCESS_NODE_DIR="${nodeDir}"
 export PATH="${nodeDir}":\$PATH
 if [[ ! "\${@}" =~ "${file}" ]]; then
diff --git a/packages/node-patches/src/subprocess.ts b/packages/node-patches/src/subprocess.ts
index 8242f73..bf1142d 100644
--- a/packages/node-patches/src/subprocess.ts
+++ b/packages/node-patches/src/subprocess.ts
@@ -29,7 +29,7 @@
     const nodeEntry = path.join(nodeDir, 'node');
     if (!fs.existsSync(nodeEntry)) {
       fs.writeFileSync(
-          nodeEntry, `#!/bin/bash
+          nodeEntry, `#!/usr/bin/env bash
 export NP_SUBPROCESS_NODE_DIR="${nodeDir}"
 export PATH="${nodeDir}":\$PATH
 if [[ ! "\${@}" =~ "${file}" ]]; then