Skip to content
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/baz

Correct code:

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

Rationale:

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.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally