Answers:
启动一个子shell:
(umask 22 && cmd)
然后,新的umask
只会更改该子外壳。
注意,zsh
在子shell进程中执行子shell的最后一个命令,而不是派生另一个命令,这意味着,如果该命令是外部的,则您甚至没有浪费一个进程,只是前叉已经完成(因此umask
完成了)在子进程中,该子进程稍后将执行您的命令)。
您可以将其包装在shell脚本中。umask继承所有子进程。
cmd.sh:
umask 0022
cmd
$ (
与$(
您的评论,现在我明白了:( umask 0022; cmd )
。