diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py
index a7796e716e08a2c1399b129ca8721c8527cbdc44..581fae5540d9899a374288bc92acb86954448a55 100644
--- a/lib/spack/spack/util/module_cmd.py
+++ b/lib/spack/spack/util/module_cmd.py
@@ -35,7 +35,8 @@ def module(*args):
         module_p  = subprocess.Popen(module_cmd,
                                      stdout=subprocess.PIPE,
                                      stderr=subprocess.STDOUT,
-                                     shell=True)
+                                     shell=True,
+                                     executable="/bin/bash")
 
         # Cray modules spit out warnings that we cannot supress.
         # This hack skips to the last output (the environment)
@@ -51,7 +52,8 @@ def module(*args):
         module_p = subprocess.Popen(module_cmd,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.STDOUT,
-                                    shell=True)
+                                    shell=True,
+                                    executable="/bin/bash")
         # Decode and str to return a string object in both python 2 and 3
         return str(module_p.communicate()[0].decode())