我正在尝试使用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.
我csh
在 RHEL 6.9 上运行它。像这样的东西umask 022
很好用。为什么行为会与联机帮助页不同?
由于
umask
改变了 shell 的内部状态,它必须是一个 shell builtin。POSIX shell
umask
内置有一个-S
选项,因为这是 POSIX 要求,但csh
s 没有。您的umask
手册页记录了umask
内置的bash
,而不是内置的csh
。查看 csh 手册页以获取其umask
内置文档。没有充分的理由为什么要
csh
在本世纪使用,尤其是在 GNU/Linux 系统上,但如果必须这样做,您总是可以这样做:报告一个象征性的形式
umask
。这将报告
umask
正在执行的子进程的sh
,但由于umask
是在 fork 上继承并在 exec 中保留的,因此它应该与csh
s相同umask
。在任何情况下,返回的
umask
值对 都没有用csh
,因为csh
的umask
内置函数不支持符号形式。