我试图使用umask -S以符号形式显示当前掩码(在我的系统上按man umask显示,这给了页面BASH_BUILTINS(1))。但umask的行为似乎不像该手册所宣称的那样:
user$ umask
22
user$ umask -S
umask: Improper mask.
user$ umask -p
umask: Improper mask.
user$ which umask
umask: shell built-in command.我在RHEL6.9上运行csh。类似于umask 022的东西工作得很好。为什么这种行为与命令不同?
发布于 2018-11-01 14:18:07
因为umask改变了shell的内部状态,所以它必须是shell内置的。
POSIX umask内置有一个-S选项,因为这是POSIX的要求,但是csh's没有。您的umask手册页记录了umask bash内置版,而不是csh版。请查看csh手册页以获得umask内置版的文档。
在本世纪,特别是在GNU/Linux系统中,您没有理由要使用csh,但如果必须这样做,您可以始终这样做:
sh -c 'umask -S'报告该umask的符号形式。
这将报告执行sh的子进程的D13,但是由于umask是在fork上继承的,并且保存在exec上,所以应该与csh's umask相同。
无论如何,返回的umask不会对csh有用,因为csh's umask内置不支持符号形式。
https://unix.stackexchange.com/questions/479131
复制相似问题