1つのコマンドのみのumaskを変更するにはどうすればよいですか?


13

1つのコマンドについてのみ、デフォルトとは異なるumaskを使用して、Linux(zsh、重要な場合)でコマンドを対話的に実行するにはどうすればよいですか?おそらく、コマンドを1行に組み合わせたものでしょうか。新しいumaskはそのコマンドにのみ適用され、次に入力されるコマンドのデフォルト値に戻ります。

コマンドが入力される前に有効なデフォルトのumaskにとらわれないことが理想的です(つまり、デフォルトのumaskを指定する必要はありません)。

回答:


17

サブシェルを開始します。

(umask 22 && cmd)

次に、新しいものumaskはそのサブシェルのみを変更します。

zsh代わりに別のものをフォークのサブシェル過程でサブシェルの最後のコマンドを実行し、そのコマンドが外部にある場合、あなたもプロセスを無駄にしていないことを意味し、それはので、フォークは(先に行われているだけのことですumask行われます後でコマンドを実行する子プロセス内)。


2

あなたはそれをシェルスクリプトでラップすることができます。umaskはすべての子プロセスを継承します。

cmd.sh:

umask 0022
cmd

または、1つのコマンドラインで実行する場合は、「$(umask 0022; cmd)」のようなシェルを呼び出すことができます
Rob Bos

1
私はあなたのコメントで混乱$ ($(ました、今私は理解します:( umask 0022; cmd )
donothings成功

おっと、まあ、少なくとも誰かがそれを明確にした^^
Rob Bos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.