1つのコマンドについてのみ、デフォルトとは異なるumaskを使用して、Linux(zsh、重要な場合)でコマンドを対話的に実行するにはどうすればよいですか?おそらく、コマンドを1行に組み合わせたものでしょうか。新しいumaskはそのコマンドにのみ適用され、次に入力されるコマンドのデフォルト値に戻ります。
コマンドが入力される前に有効なデフォルトのumaskにとらわれないことが理想的です(つまり、デフォルトのumaskを指定する必要はありません)。
1つのコマンドについてのみ、デフォルトとは異なるumaskを使用して、Linux(zsh、重要な場合)でコマンドを対話的に実行するにはどうすればよいですか?おそらく、コマンドを1行に組み合わせたものでしょうか。新しいumaskはそのコマンドにのみ適用され、次に入力されるコマンドのデフォルト値に戻ります。
コマンドが入力される前に有効なデフォルトのumaskにとらわれないことが理想的です(つまり、デフォルトのumaskを指定する必要はありません)。
回答:
サブシェルを開始します。
(umask 22 && cmd)
次に、新しいものumask
はそのサブシェルのみを変更します。
注zsh
代わりに別のものをフォークのサブシェル過程でサブシェルの最後のコマンドを実行し、そのコマンドが外部にある場合、あなたもプロセスを無駄にしていないことを意味し、それはので、フォークは(先に行われているだけのことですumask
行われます後でコマンドを実行する子プロセス内)。
あなたはそれをシェルスクリプトでラップすることができます。umaskはすべての子プロセスを継承します。
cmd.sh:
umask 0022
cmd
$ (
し$(
ました、今私は理解します:( umask 0022; cmd )
。