¿Ejecuta el programa desde un script de shell pero se comporta como un solo proceso?

Respuestas:

7

Puedes usar el execcomando:

$ 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.

Ejemplo:

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

Como puede ver, la subshell se reemplaza por echo.

Andrea Corbellini
fuente
Gracias por su respuesta. Puedo ejecutar, por ejemplo, esto: "exec -a firefox gedit &" y gedit aparece en un lanzador como Firefox. Pero no funciona para la mayoría de las aplicaciones.
zubozrout
Lo más probable es que el problema esté en el hecho de que, aunque creé un nuevo proceso, usa ambos nombres, el original y uno recién definido. Salida PS: 1000 6151 0.0 0.0 13720 944 pts / 2 R + 10:49 0:00 grep --color = auto firefox | 10006153 0.0 0.0 13716940 pts / 2 S + 10:49 0:00 grep --color = auto gedit
zubozrout
¿Puedo preguntar por qué estás usando &al final de tu comando? Eso ejecutará el comando en una subshell, que es exactamente lo que no desea.
Andrea Corbellini
Sí, solo lo intentaba en la terminal, no en un script de shell.
zubozrout
2
Entonces, leí tu pregunta anterior y parece que estás malinterpretando algunas cosas. Está confundiendo el proceso con el argumento cero con PID con el iniciador de guiones . Y también estás haciendo la pregunta equivocada. Lo que quiere preguntar es primero: ¿cómo asocia el tablero los lanzadores a los procesos? Una vez que encuentre la respuesta a esa pregunta, también encontrará una respuesta a su pregunta original.
Andrea Corbellini