diff --git a/envsetup.py b/envsetup.py
index c804e17b9f6f3c0760766cfa29957b2614bfb3c6..7e038986ba1777e31774f047a32da98e6177c057 100755
--- a/envsetup.py
+++ b/envsetup.py
@@ -45,7 +45,7 @@ class EnvSetup():
                     setup_module = imp.load_source('setup_%s' % name, os.path.join(path, self.PY_SETUP_NAME))
                     self.actions.append(dict(index=index, label=label, path=path, fct=setup_module.setup))
                 elif os.path.isfile(os.path.join(path, self.BASH_SETUP_NAME)):
-                    self.actions.append(dict(index=index, label=label, path=path, fct=os.path.join(path, self.BASH_SETUP_NAME)))
+                    self.actions.append(dict(index=index, label=label, path=path, fct='bash -e "%s"' % os.path.join(path, self.BASH_SETUP_NAME)))
                 else:
                     self.actions.append(dict(index=index, label=label, path=path, fct=None))
         self.actions.sort(key=lambda a: a['index'])
@@ -155,7 +155,7 @@ class EnvSetup():
                     try:
                         os.chdir(action['path'])
                         if isinstance(action['fct'], str):
-                            utils.run_commands(['\'%s\'' % action['fct']])
+                            utils.run_commands([action['fct']])
                         else:
                             action['fct'](interactive)
                     except Exception as e: