Abra una terminal gnome a través de un script bash y llame y ejecute un comando con alias

Abra una terminal gnome a través de un script bash y llame y ejecute un comando con alias

Estoy intentando escribir un script bash que abra una nueva ventana de terminal de gnome y ejecute un comando con alias. He visto que en lugar de usar alias, usar una función es el camino correcto a seguir. He probado ambos enfoques, pero no puedo hacerlo funcionar porque aparece un error que indica que no se reconoce el comando.

Esto es lo que tengo.

#!/bin/bash

# Cluster related functions
function gateway () {
    ssh user@something -t ssh gateway
}

gnome-terminal --window-with-profile=Bash -- bash -c "gateway; bash;"

El error que recibo es:

bash: gateway: command not found

Respuesta1

La solución más sencilla es exportar la función antes de llamar gnome-terminal:

export -f gateway

Notas:

  • No puede exportar alias.

  • Exportar funciones no es una característica portátil. Funcionará de basha bash.

  • Naturalmente, funcionará si lo nuevo bashes descendiente de lo antiguo bash(donde se exportó la función). Por ejemplo, si gnome-terminalhereda del antiguo bashy el nuevo bashhereda del gnome-terminal. Esto sucede cuando el viejo bashse ejecuta en un terminal que no lo es gnome-terminal.

    Mis pruebas indican que si gnome-terminalse ejecuta desde dentro gnome-terminal(por lo que el entorno contiene GNOME_TERMINAL_*variables), entonces el nuevo gnome-terminalproceso delegará la tarea al que ya se está ejecutando gnome-terminaly saldrá. La herencia natural del entorno al nuevo bashno puede ocurrir, aun así el nuevo gnome-terminalproceso es lo suficientemente inteligente como para comunicar no sólo la orden sino también el entorno. De esta manera lo nuevo bashdentro de lo viejo gnome-terminalse comporta como un descendiente de lo viejo bash, la función exportada funciona. Probado con gnome-terminal3.28.2.

información relacionada