"konsole -e" da como resultado una terminal de solo lectura

"konsole -e" da como resultado una terminal de solo lectura

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.shse ve así (para pruebas simples):

echo hello world
export FOO=bar

Cuando se ejecuta el comando anterior, run_oenv.shse 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 -econ 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 bashshell interactivo que genere su archivo, utilícelo bashcon su --rcfileopció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 ~/.bashrcarchivo. 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.shcó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.sharchivo para que su archivo anule cualquier variable o configuración en ~/.bashrc)

información relacionada