Como posso alterar o umask apenas para um comando?

7

Como posso executar interativamente um comando no Linux (zsh, se for importante) com um umask diferente do padrão, apenas para um comando? Talvez uma combinação de comandos combinados em uma única linha? O novo umask deve se aplicar apenas a esse comando e retornar ao seu valor padrão para o próximo comando inserido.

Idealmente, o comando seria agnóstico para o umask padrão em vigor antes de ser inserido (em outras palavras, o umask padrão não precisa ser especificado).

    
por Andrew Ferrier 23.02.2013 / 20:08

2 respostas

11

Inicie um subshell :

(umask 22 && cmd)

Em seguida, o novo umask só alterará essa sub-sela.

Note que zsh executa o último comando do subshell no processo de subshell ao invés de bifurcar outro, o que significa que se esse comando for externo, você não está nem perdendo um processo, é apenas que o fork está pronto anterior (assim o umask é feito no processo filho que mais tarde executará seu comando).

    
por 23.02.2013 / 21:36
1

Você poderia envolvê-lo em um script de shell. umask herda para todos os processos filhos.

cmd.sh:

umask 0022
cmd
    
por 23.02.2013 / 20:09

Tags