Skip to content

exec: Linux Command e Unix Command

8 de junho de 2021

No Linux, o exec O comando substitui o processo do shell atual por um comando especificado – basicamente, transferindo o ID do processo do shell atual para um novo processo, que então assume aquele PID. A maioria dos usuários casuais de desktop Linux não deve usar exec. É um programa poderoso com um caso de uso restrito para scripts. Em circunstâncias normais, raramente há um valor para invocar exec para operações de shell de rotina.

Como ‘exec’ funciona

Quando você corre exec com um novo comando como argumento, o Linux executa esse novo comando usando o mesmo processo do shell que o invocou. Se você executá-lo sem especificar um novo comando, os redirecionamentos relevantes ocorrerão no shell atual. Por exemplo, quando você inicia uma sessão de shell iniciando um programa de gerenciamento de terminal, o shell padrão é chamado automaticamente. Quando você digita saída, a sessão de shell termina e, dependendo do software de gerenciamento de terminal, a janela pode desaparecer. Para ver como exec funciona, inicie um shell e, em seguida, inicie um segundo shell na mesma sessão. Se você usar Zsh, por exemplo, quando a janela do terminal for aberta, inicie outra sessão Zsh.

Ao verificar o processo em execução, você verá que cada vez que invocar o shell, um novo trabalho com um ID de processo separado é gerado. E toda vez que você sai de uma sessão shell com o saída comando, uma dessas sessões termina. Se você executar data de uma sessão de shell, você verá a data exibida na saída padrão. Se você então usar exec para redirecionar a saída padrão para um arquivo de texto, a saída padrão que você espera ver grava no arquivo, até que você saia da sessão Zsh que exec controles. Ao sair, a saída padrão é exibida conforme o esperado porque a sessão Zsh original torna-se ativa novamente.

comando linux exec

Caso de uso para ‘exec’

Um caso de uso comum para exec relaciona-se a arrumar um script. Se você precisar usar um script para preparar os parâmetros de um comando, encerrar o script com exec inicia o novo programa com esses parâmetros e fecha a sessão shell atual.