Para mantener la descripción general, me gusta colocar varios comandos siempre en el mismo orden e iniciarlos automáticamente juntos (gradle, git, base de datos, scala-REPL, jboss ...)
-H (mantener) parece significar que el terminal no se cierra después de la finalización, pero ¿cómo termino tal proceso intencionalmente? ¿De ningún modo? De tal manera que pueda seguir usando el terminal.
Estoy usando xubuntu con xfce4-terminal y bash. ¿Existe una mejor solución GUI para iniciar múltiples comandos, con la capacidad de continuar trabajando en esa ventana / pestaña?
Actualización: si no conoce estos comandos: Jboss y gradle producen continuamente resultados, que no desea que se mezclen en el mismo terminal. Y a veces deben interrumpirse con ^ C y reiniciarse. No me gusta volver a abrir un término xfce4 y navegar al directorio en el que necesito actuar.
La base de datos y scala-REPL son interactivos, por lo que no tiene sentido iniciarlos en segundo plano.
Mi script de inicio actual simplemente navega a los directorios deseados y abre todas las pestañas en el orden correcto para encontrarlas siempre en la misma posición, nombrando cada pestaña para su propósito:
xfce4-terminal -T eclipse --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
--tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
--tab -T bash --working-directory=/home/stefan/oximity \
--tab -T gradle --working-directory=/home/stefan/oximity/med \
--tab -T git --working-directory=/home/stefan/oximity/med \
--tab -T mysql --working-directory=/opt/mini/mysql \
--tab -T jboss --working-directory=/opt/mini/jboss \
--tab -T jboss-log --working-directory=/opt/mini/jboss/standalone/log \
--tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Eclipse y arandr se separan del shell y se ejecutan en su propia ventana, por lo que funciona el parámetro -e (ejecutar). Creo que para scala-REPL funciona, ya que es el último comando de la lista.
fuente

xterm -e 'stuff;bash'?Respuestas:
La
-H/-holdopción es mantener abierta la ventana del emulador de terminal una vez que las aplicaciones iniciadas en ella (shell u otro) hayan salido. En ese estado, nada más puede suceder.Si desea iniciar un comando como un trabajo de un shell interactivo en el emulador de terminal xfce4-terminal y mantener el shell en ejecución y usarlo de manera interactiva después de que la aplicación haya salido,
bashpuede usar la$PROMPT_COMMANDvariable de entorno paraxfce-terminaliniciar un shell interactivo que inicia el comando dado justo antes del primer aviso.De esa manera, los comandos son trabajos de ese shell, lo que significa que puede suspenderlos Ctrl-Zy reanudarlos más tarde
fg/bgcomo si los hubiera ingresado en el indicador de ese shell interactivo.Eso supone, sin embargo, que no establece el
$PROMPT_COMMANDen su~/.bashrc. También tenga en cuenta que el estado de salida del comando no estará disponible en$?.Para hacerlo aún más parecido al comando ingresado en el indicador de comandos de la shell, incluso puede agregarlo a la lista del historial. Me gusta:
De esa manera, una vez que salga
vi, puede presionar la Uptecla para recuperar el mismovicomando.Una forma más fácil de escribirlo:
Los:
La solución como se da en otras respuestas funciona pero tiene algunos inconvenientes:
cmdestá ejecutando, eso mata el exteriorshya que solo hay un grupo de proceso para ambosshycmd.cmd$PROMPT_COMMANDenfoque, el estado de salida del comando no estará disponible en$?.Puede trabajar alrededor de 1 arriba haciendo:
O:
Con este último, también podrá suspender el proceso Ctrl-Z, pero no podrá usarlo
fg/bg. Podrás seguir en el fondo, aunque haciendo unakill -s CONTen el pid delcmd.fuente
bashscripts, no hay historial en absoluto, ya que no hay edición de línea o interacción del usuario a menos que lo useread -een su script (y verá quehistory -s textfunciona allí para preparar el historial visto por esoread -e). Aquí, no estamos ejecutandohistory -sdesde un script, sino desde el$PROMPT_COMMANDgancho de un shell interactivo.xfce4-terminalcomo mínimo, la versión 0.6.3 ahora quiere un parámetro adicional--disable-server- para pasar por el entorno. Ref: lists.debian.org/debian-user/2017/10/msg00045.html .Hasta donde he entendido su pregunta, desea ejecutar algunos procesos en un terminal, pudiendo hacer Ctrl+ Cellos y, después de eso, mantener la ventana abierta, con el shell.
Si tengo razón, esto podría lograrse con un comando como este:
fuente
múltiples aplicaciones en
xfce4-terminalpestañasAgregar un shell interactivo a cada pestaña xfce
Puedes usar este truco para agregar un shell si / cuando tienes Ctrl+Cuna pestaña:
Esto te dará lo siguiente:
fuente
Al salir del shell sin
-Hel terminal también se cerrará. Con este indicador, el terminal seguirá ejecutándose, pero el proceso de shell se cierra y no se puede revivir.¿Creo que está intentando archivar que acaba de iniciar su terminal y se inicia su entorno de desarrollo?
Puede crear un script de shell y poner todos sus comandos dentro de él. Al final del script, solo comienza su shell:
Entonces llame a este script vía
xfce4-terminal -e /the/script. Cuando finalice$SHELLel proceso principal (su secuencia de comandos) finalice y las tareas en segundo plano recibirán la señal de salida y también se cerrarán.Si desea mantenerlos vivos, use, por ejemplo,
nohup jboss &en su secuencia de comandosfuente