Abra la aplicación desde la terminal y permanezca vinculado al proceso (como Linux), de modo que cuando se envía CTRL+C a la terminal, la aplicación también se cierra.

Tengo una aplicación (herramienta de código cerrado no desarrollada por mí) que requiere que exista otro proceso antes de ejecutarse correctamente. Cuando salgo de esta aplicación, también quiero que se elimine ese proceso personalizado. Mi solución es tener un "lanzador" de script de shell. Puedo manejar la creación de menús de secuencias de comandos de Shell, el evento de cierre y la apertura/eliminación de procesos. El problema es que parece que no puedo descifrar cómo abrir una aplicación desde la Terminal, pero mantengo la Terminal bloqueada en esa aplicación para que cuando cierre la ventana de la Terminal o envíe CTRL+C, la aplicación se cierre. Si está familiarizado con Linux, un ejemplo simple de mi comportamiento deseado es simplemente "archivo gedit.txt". El editor de texto se abriría pero solo viviría mientras lo haga la ventana de la terminal.

En OSX con el comando "abrir", puedo iniciar aplicaciones pero no están vinculadas a la ventana de Terminal. ¿Hay algún comando alternativo que deba usar para lograr este comportamiento?

Aquí está mi guión hasta ahora:

#!/bin/bash
set -e
function cleanup {
    osascript -e 'tell application "APP1" to quit'
    osascript -e 'tell application "APP2" to quit'
}
trap cleanup EXIT

clear

PS3='Please select an option: '
options=("Start Apps" "Stop Apps")
select opt in "${options[@]}"
do
    case $opt in
        "Start Apps")
            open -a "APP1"
            open -a "APP2"
            ;;
        "Stop Apps")
            cleanup 
            ;;
        *) echo invalid option;;
    esac
done
Linux y OS X funcionan de la misma manera: el problema aquí es usar open, que se abre en un proceso no secundario; llame al comando directamente como el ejecutable de Unix; sin embargo, esta no es la mejor manera, ya que su primera aplicación debe bifurcar la de fondo y luego matar el terminal llena la primera aplicación que elimina la de fondo, ya que son subprocesos o convierte a la aplicación de fondo en un demonio
En lugar de usar abierto. Puede ejecutar el archivo ejecutable de las aplicaciones./Applications/TextEdit.app/Contents/MacOS/TextEdit
¡Gracias chicos! ¡@markhunte haz que esa sea una respuesta y la aceptaré! Eso era exactamente lo que necesitaba.
De acuerdo. Respuesta añadida

Respuestas (1)

En lugar de usar el comando Unix abierto.

Puede ejecutar el archivo ejecutable de las aplicaciones directamente.

Por ejemplo para TextEdit.app

Ejecutando el comando en Terminal.app

/Applications/TextEdit.app/Contents/MacOS/TextEdit

Esto abrirá TextEdit usando un proceso de Terminal.app

Cuando cierras la ventana de la terminal o usas Ctrl +C

TextEdit se cerrará.