From 31c5601c5efcc637bdcbac43d0479b985108d985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Adri=C3=A1n=20Ontivero?= Date: Wed, 23 Jan 2019 06:35:08 +0100 Subject: [PATCH] Check unset flags under dash and POSIX sh The only acceptable flags for the unset builtin under POSIX sh and dash are [-fv]. Bash though, accepts [-n] too. This commits makes shellcheck warn about this. --- src/ShellCheck/Checks/ShellSupport.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ShellCheck/Checks/ShellSupport.hs b/src/ShellCheck/Checks/ShellSupport.hs index 8f55b3c..96a63b8 100644 --- a/src/ShellCheck/Checks/ShellSupport.hs +++ b/src/ShellCheck/Checks/ShellSupport.hs @@ -152,6 +152,8 @@ prop_checkBashisms69 = verifyNot checkBashisms "#!/bin/sh\numask -S" prop_checkBashisms70 = verify checkBashisms "#!/bin/sh\ntrap -l" prop_checkBashisms71 = verify checkBashisms "#!/bin/sh\ntype -a ls" prop_checkBashisms72 = verifyNot checkBashisms "#!/bin/sh\ntype ls" +prop_checkBashisms73 = verify checkBashisms "#!/bin/sh\nunset -n namevar" +prop_checkBashisms74 = verifyNot checkBashisms "#!/bin/sh\nunset -f namevar" checkBashisms = ForShell [Sh, Dash] $ \t -> do params <- ask kludge params t @@ -306,7 +308,8 @@ checkBashisms = ForShell [Sh, Dash] $ \t -> do ("trap", Just []), ("type", Just []), ("ulimit", if isDash then Nothing else Just ["f"]), - ("umask", Just ["S"]) + ("umask", Just ["S"]), + ("unset", Just ["f", "v"]) ] bashism t@(T_SourceCommand id src _) = let name = fromMaybe "" $ getCommandName src