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.

cshRHEL 6.9で動作しています。同様にumask 022うまくいきます。アクションがマンページと異なるのはなぜですか?

答え1

これはシェルの内部状態を変更するので、シェル組み込みumask関数でなければなりません。

POSIXの要件なので、POSIXシェルumaskには組み込みのオプションがありますが、sはそうではありません。代わりに、マニュアルページに組み込み機能が文書化されています。以下の文書については、cshのマニュアルページをご覧ください。-Scshumaskumaskbashcshそれ umask内蔵。

今世紀には、特にGNU / Linuxシステムでこれを使用したい理由はありませんがcsh、必要な場合はいつでも次のことができます。

sh -c 'umask -S'

これを記号形式で報告しますumask

umaskこれは実行中の子プロセスを報告しますが、これはフォークから継承され、execで永続されるため、プロセスと同じである必要がshあります。umaskcshumask

いずれにせよ、返された内容は組み込み関数がシンボル形式をサポートしていないのでumask役に立ちません。cshcshumask

関連情報