为什么python中的os.mkdir设置权限的方式和bash中的mkdir设置权限的方式不一样?

Why is the way of setting permission by os.mkdir in python different from one of mkdir in bash?

我在 bash 中通过 mkdir 和在 python 中通过 os.mkdir 创建了文件模式的目录。 他们制作了具有不同权限的目录。

我在命令行中的测试代码如下,

$ mkdir -m 0775 aaa
$ cd aaa
$ mkdir -m 0777 bbb
$ python -c 'import os; os.mkdir("ccc",0o777)'

目录权限,aaa、bbb、ccc如下

directory aaa: drwxrwxr-x
directory bbb: drwxrwxrwx
directory ccc: drwxrwxr-x

似乎bash中的mkdir不关心父目录的权限,但python中的os.mkdir关心。这样对吗? 为什么他们有不同的机制?

非常感谢。

如果您指定模式,

mkdir(1)temporarily setting the umask 到 0,如手册中的秘密记录:

   -m, --mode=MODE
          set file mode (as in chmod), not a=rwx - umask

Python 只是用给定的模式和通常的 umask 行为调用 mkdir(2) 系统调用。

mkdir(1) 的等效 Python 代码:

m = os.umask(0)
os.mkdir("ccc")
os.umask(m)