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
関数でなければなりません。
POSIXの要件なので、POSIXシェルumask
には組み込みのオプションがありますが、sはそうではありません。代わりに、マニュアルページに組み込み機能が文書化されています。以下の文書については、cshのマニュアルページをご覧ください。-S
csh
umask
umask
bash
csh
それ umask
内蔵。
今世紀には、特にGNU / Linuxシステムでこれを使用したい理由はありませんがcsh
、必要な場合はいつでも次のことができます。
sh -c 'umask -S'
これを記号形式で報告しますumask
。
umask
これは実行中の子プロセスを報告しますが、これはフォークから継承され、execで永続されるため、プロセスと同じである必要がsh
あります。umask
csh
umask
いずれにせよ、返された内容は組み込み関数がシンボル形式をサポートしていないのでumask
役に立ちません。csh
csh
umask