SC2174
Joachim Ansorg edited this page Nov 12, 2021
·
5 revisions
When used with -p, -m only applies to the deepest directory.
Problematic code:
mkdir -p -m 0755 foo/bar/bazCorrect code:
mkdir -p foo/bar/baz
chmod 0755 foo/bar/baz foo/bar fooRationale:
When using -m 0755, the mode of the directory created will be set to 0755. When using -p, parent directories which do not exist will be created, but the mode specified by -m will only be used on the last directory. The parent directories will get their access mode the default way, via umask(2).
Exceptions:
ShellCheck does not warn if the path only has one component, as in mkdir -p -m 0755 mydir, but will not attempt to determine whether this applies for a variable as in mkdir -p -m 0755 "$mydir". You can mkdir/chmod separately or ignore this message.