From 9f45dc4c8b50f5086c67f67358c83a442afd1657 Mon Sep 17 00:00:00 2001
From: Tito Sacchi <tito.sakki@gmail.com>
Date: Fri, 18 Jan 2019 09:21:07 +0100
Subject: [PATCH] Not determine the shell from `.sh` extension

See discussion on issue #1369 for details.
---
 src/ShellCheck/Analytics.hs | 2 +-
 src/ShellCheck/Checker.hs   | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs
index 8f66aaf..78b5366 100644
--- a/src/ShellCheck/Analytics.hs
+++ b/src/ShellCheck/Analytics.hs
@@ -484,7 +484,7 @@ checkShebang params (T_Annotation _ list t) =
 checkShebang params (T_Script id sb _) = execWriter $ do
     unless (shellTypeSpecified params) $ do
         when (sb == "") $
-            err id 2148 "Tips depend on target shell and yours is unknown. Add a shebang or an extension to the filename."
+            err id 2148 "Tips depend on target shell and yours is unknown. Add a shebang or a .bash, .ksh, .dash extension to the filename."
         when (executableFromShebang sb == "ash") $
             warn id 2187 "Ash scripts will be checked as Dash. Add '# shellcheck shell=dash' to silence."
     unless (null sb) $ do
diff --git a/src/ShellCheck/Checker.hs b/src/ShellCheck/Checker.hs
index 67bd1c3..ac51ddd 100644
--- a/src/ShellCheck/Checker.hs
+++ b/src/ShellCheck/Checker.hs
@@ -51,9 +51,10 @@ tokenToPosition startMap t = fromMaybe fail $ do
 shellFromFilename filename = foldl mplus Nothing candidates
   where
     shellExtensions = [(".ksh", Ksh)
-                      ,(".sh", Sh)
                       ,(".bash", Bash)
                       ,(".dash", Dash)]
+                      -- The `.sh` is too generic to determine the shell:
+                      -- We fallback to Bash in this case and emit SC2148 if there is no shebang
     candidates =
         map (\(ext,sh) -> if ext `isSuffixOf` filename then Just sh else Nothing) shellExtensions