Executa o programa a partir de um script de shell, mas se comporta como um único processo?

8

Existe uma maneira de executar um aplicativo a partir de um script de shell, mas não criar outro processo. Eu quero que pareça apenas um processo . Não importa se meu script de shell é substituído por um novo processo ou se ele continuará após o término de um aplicativo chamado.
Isso também deve resolver minha pergunta anterior: link
Muito obrigado pela sua ajuda.

    
por zubozrout 26.01.2013 / 10:29

1 resposta

6

Você pode usar o comando exec :

$ help exec
exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
    Replace the shell with the given command.

    Execute COMMAND, replacing this shell with the specified program.
    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
    any redirections take effect in the current shell.

    Options:
      -a name   pass NAME as the zeroth argument to COMMAND
      -c        execute COMMAND with an empty environment
      -l        place a dash in the zeroth argument to COMMAND

    If the command cannot be executed, a non-interactive shell exits, unless
    the shell option 'execfail' is set.

    Exit Status:
    Returns success unless COMMAND is not found or a redirection error occurs.

Exemplo:

user@host:~$ PS1="supershell$ "
supershell$ bash
user@host:~$ PS1="subshell$ "
subshell$ exec echo hello
hello
supershell$ 

Como você pode ver, o subshell é substituído por echo .

    
por Andrea Corbellini 26.01.2013 / 10:35