Estoy intentando abrir mediante programación una nueva terminal y ejecutar automáticamente un script personalizado que establece varias variables de entorno para prepararlo para una sesión interactiva. Todo esto funciona bien, excepto que el terminal resultante no se puede editar, es decir, no hay cursor. Mi intento actual se ve así:
konsole -hold -e /path/to/bash/script/run_oenv.sh
donde run_oenv.sh
se ve así (para pruebas simples):
echo hello world
export FOO=bar
Cuando se ejecuta el comando anterior, run_oenv.sh
se ejecuta correctamente y veo que la declaración de depuración esperada se repite en la nueva terminal, pero no puedo entender cómo hacer que la nueva terminal sea interactiva. ¿Qué me estoy perdiendo?
En última instancia, el script bash tendrá que hacer más que simplemente establecer variables de entorno, pero este es el caso de prueba más simple.
Esto está en Centos 7/KDE.
Respuesta1
Cuando se usa -e
con un emulador de terminal para ejecutar un comando, ejecuta ese comandoen cambiodel caparazón que habría comenzado. Esto significa que ejecuta su script y luego nada más.
Si desea iniciar un bash
shell interactivo que genere su archivo, utilícelo bash
con su --rcfile
opción de línea de comando:
konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh
Tenga en cuenta que esto hacebash
nolee el ~/.bashrc
archivo. Si aún desea obtener el código fuente ~/.bashrc
, como sucedería normalmente en las sesiones de shell interactivas, deberá hacerlo desde su run_oenv.sh
código:
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
o sin la sintaxis de cortocircuito,
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
(probablemente en la parte superior del run_oenv.sh
archivo para que su archivo anule cualquier variable o configuración en ~/.bashrc
)