SC2174 – ShellCheck Wiki

See this page on GitHub


When used with -p, -m only applies to the deepest directory.

Problematic code:

mkdir -p -m 0755 foo/bar/baz

Correct code:

mkdir -p foo/bar/baz
chmod 0755 foo/bar/baz foo/bar foo


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).


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.

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.