La respuesta de ændrük está bien, pero quizás sea un poco pesada para la tarea.
Aquí hay un guión que escribe un guión basado en sus argumentos
#!/bin/sh
# terminal-plus-command: start a subordinate terminal which runs
# the interactive shell after first running the command arguments
tmpscript=/tmp/tmpscript.$$
echo "#!$SHELL" > $tmpscript
echo "$@" >> $tmpscript
echo exec "$SHELL" >> $tmpscript
chmod +x $tmpscript
gnome-terminal --command $tmpscript
rm -f $tmpscript
Si no has hecho mucha programación de shell, parece que hay más magia aquí que la que hay. Primero, nombro un archivo temporal para contener el script donde $$
está el ID del proceso del shell que ejecuta este script. La /tmp/something.$$
metáfora se usa en caso de que dos instancias de este script se ejecuten al mismo tiempo, no intentarán usar el mismo archivo temporal.
La variable $SHELL
se establece con el nombre del shell que ejecuta el script. Si usa / usr / bin / bash, presumiblemente le gustaría que el mini script también lo use.
El "$@"
es un idioma de shell para "interpolar todos mis argumentos, citándolos si es necesario". Esta peculiar sintaxis provoca
script.sh 'my file' your\ file
interpolar los argumentos como dos elementos
"my file" "your file"
en lugar de los cuatro que $@
producirían
"my" "file" "your" "file"
Las últimas líneas del script arreglan para que un terminal gnome comience a ejecutar el mini script y luego inicie un shell interactivo. Cuando el terminal gnome se cierra, el script temporal se elimina porque la basura no está fresca.
La última línea no es parte del mini script, demuestra que el mini script funciona. Si el script de 11 líneas anterior está en un archivo llamado, rt.sh
entonces lo chmod
hace ejecutable y luego se ejecuta.
$ chmod +x rt.sh && ./rt.sh echo hello world
El resultado de todo esto será un terminal de gnomo que se inicia, muestra
hello world
en su primera línea y luego inicia un shell interactivo:
msw@myhost:~$