diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py
index b6f644190f..a8cca8faaf 100644
--- a/lib/ansible/inventory/__init__.py
+++ b/lib/ansible/inventory/__init__.py
@@ -99,12 +99,40 @@ class Inventory(object):
                 self.host_list = os.path.join(self.host_list, "")
                 self.parser = InventoryDirectory(filename=host_list)
                 self.groups = self.parser.groups.values()
-            elif utils.is_executable(host_list):
-                self.parser = InventoryScript(filename=host_list)
-                self.groups = self.parser.groups.values()
             else:
-                self.parser = InventoryParser(filename=host_list)
-                self.groups = self.parser.groups.values()
+                # check to see if the specified file starts with a
+                # shebang (#!/), so if an error is raised by the parser
+                # class we can show a more apropos error
+                shebang_present = False
+                try:
+                    inv_file = open(host_list)
+                    first_line = inv_file.readlines()[0]
+                    inv_file.close()
+                    if first_line.find('#!') == 0:
+                        shebang_present = True
+                except:
+                    pass
+
+                if utils.is_executable(host_list):
+                    try:
+                        self.parser = InventoryScript(filename=host_list)
+                        self.groups = self.parser.groups.values()
+                    except:
+                        if not shebang_present:
+                            raise errors.AnsibleError("The file %s is marked as executable, but failed to execute correctly. " % host_list + \
+                                                      "If this is not supposed to be an executable script, correct this with `chmod -x %s`." % host_list)
+                        else:
+                            raise
+                else:
+                    try:
+                        self.parser = InventoryParser(filename=host_list)
+                        self.groups = self.parser.groups.values()
+                    except:
+                        if shebang_present:
+                            raise errors.AnsibleError("The file %s looks like it should be an executable inventory script, but is not marked executable. " % host_list + \
+                                                      "Perhaps you want to correct this with `chmod +x %s`?" % host_list)
+                        else:
+                            raise
 
             utils.plugins.vars_loader.add_directory(self.basedir(), with_subdir=True)
         else: