diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs index 922cd6a..160ae95 100644 --- a/src/ShellCheck/Analytics.hs +++ b/src/ShellCheck/Analytics.hs @@ -590,6 +590,12 @@ prop_checkShebang9 = verifyNotTree checkShebang "# shellcheck shell=sh\ntrue" prop_checkShebang10= verifyNotTree checkShebang "#!foo\n# shellcheck shell=sh ignore=SC2239\ntrue" prop_checkShebang11= verifyTree checkShebang "#!/bin/sh/\ntrue" prop_checkShebang12= verifyTree checkShebang "#!/bin/sh/ -xe\ntrue" +prop_checkShebang13= verifyTree checkShebang "#!/bin/busybox sh" +prop_checkShebang14= verifyTree checkShebang "#!/bin/busybox sh\n# shellcheck shell=sh\n" +prop_checkShebang15= verifyNotTree checkShebang "#!/bin/busybox sh\n# shellcheck shell=dash\n" +prop_checkShebang16= verifyTree checkShebang "#!/bin/busybox ash" +prop_checkShebang17= verifyNotTree checkShebang "#!/bin/busybox ash\n# shellcheck shell=dash\n" +prop_checkShebang18= verifyNotTree checkShebang "#!/bin/busybox ash\n# shellcheck shell=sh\n" checkShebang params (T_Annotation _ list t) = if any isOverride list then [] else checkShebang params t where diff --git a/src/ShellCheck/Parser.hs b/src/ShellCheck/Parser.hs index 9f5208e..70ea05d 100644 --- a/src/ShellCheck/Parser.hs +++ b/src/ShellCheck/Parser.hs @@ -3237,10 +3237,11 @@ readScriptFile sourced = do case words sb of [] -> "" [x] -> basename x - (first:args) -> - if basename first == "env" - then fromMaybe "" $ find (notElem '=') $ skipFlags args - else basename first + (first:args) | basename first == "env" -> + fromMaybe "" $ find (notElem '=') $ skipFlags args + (first:second:args) | basename first == "busybox" -> + second + (first:_) -> basename first verifyShebang pos s = do case isValidShell s of