From e5581ed182b73edcecfc89448ff374e7f5f0d859 Mon Sep 17 00:00:00 2001 From: koalaman Date: Tue, 13 Oct 2015 10:39:36 -0700 Subject: [PATCH] Updated SC2039 (markdown) --- SC2039.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SC2039.md b/SC2039.md index 59cbafc..ea47c30 100644 --- a/SC2039.md +++ b/SC2039.md @@ -1,10 +1,9 @@ -## In POSIX sh, [[ ]] is undefined. - -The shebang indicates that the script works with `/bin/sh`, but you are using non-standard features that may not be supported. +## In POSIX sh, [\[ ]] is undefined. +You have declared that your script works with `/bin/sh`, but you are using features that have undefined behavior according to the POSIX specification. It may currently work for you, but it can or will fail on other OS, the same OS with different configurations, from different contexts (like initramfs/chroot), or in different versions of the same OS, including future updates to your current system. -Either declare a specific shell like `#!/bin/bash` or `#!/bin/dash` to make sure this shell is always used, or rewrite the script in a portable way. +Either declare that your script requires a specific shell like `#!/bin/bash` or `#!/bin/dash`, or rewrite the script in a portable way. For help with rewrites, the Ubuntu wiki has [a list of portability issues](https://wiki.ubuntu.com/DashAsBinSh) that broke people's `#!/bin/sh` scripts when Ubuntu switched from Bash to Dash. ShellCheck may not warn about all these issues.