I don't know about simpler :)
My preference is to eliminate the OS discrepancy by making Docker images the building block of the stack in dev environments, CI pipelines, and production deployments. This means you pay a constant and predictable amount of operational complexity, but eliminate the entire class of constraints caused by cross-platform variability. Seems like a good deal, trading a variable cost for a constant one.
Then you can use Bash! Or fish, or some hipster shell you found on lobste.rs. Just install it in the Docker image.