umask 没有 -S 选项

umask 没有 -S 选项

我试图用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工作得很好。为什么行为会与联机帮助页不同?

答案1

由于umask更改了 shell 的内部状态,因此它必须是 shell 内置函数。

POSIX shellumask内置有一个-S选项,因为这是 POSIX 要求,但cshs 没有。您的umask手册页记录了umask的内置函数bash,而不是csh.检查 csh 手册页以获取以下文档它是 umask内置。

没有充分的理由让你想csh在本世纪使用它,尤其是在 GNU/Linux 系统上,但如果你必须这样做,你总是可以这样做:

sh -c 'umask -S'

以象征性的形式报告这一点umask

这将报告umask正在执行的子进程的sh,但由于 是在 fork 上继承并在 exec 中保留的,所以它应该与'sumask相同。cshumask

无论如何,返回的内容umask对 没有用csh,因为cshumask内置函数不支持符号形式。

相关内容