Quiero ejecutar una subshell bash, (1) ejecutar algunos comandos, (2) y luego permanecer en esa subshell para hacer lo que me plazca. Puedo hacer cada uno de estos individualmente:
Ejecute el comando usando la
-c
bandera:$> bash -c "ls; pwd; <other commands...>"
sin embargo, inmediatamente vuelve al shell "super" después de que se ejecutan los comandos. También puedo ejecutar una subshell interactiva:
Iniciar nuevo
bash
proceso:$> bash
y no saldrá de la subshell hasta que lo diga explícitamente ... pero no puedo ejecutar ningún comando inicial. La solución más cercana que he encontrado es:
$> bash -c "ls; pwd; <other commands>; exec bash"
que funciona, pero no de la manera que quería, ya que ejecuta los comandos dados en un subshell y luego abre uno separado para la interacción.
Quiero hacer esto en una sola línea. Una vez que salga del subshell, debería volver al shell "super" normal sin incidentes. Debe haber una manera ~~
NB: lo que no estoy preguntando ...
- sin preguntar dónde conseguir la página de manual de bash
- sin preguntar cómo leer los comandos de inicialización de un archivo ... Sé cómo hacer esto, no es la solución que estoy buscando
- no estoy interesado en usar la pantalla tmux o gnu
- No estoy interesado en dar contexto a esto. Es decir, la pregunta pretende ser general, y no para ningún propósito específico.
- si es posible, quiero evitar el uso de soluciones alternativas que logren lo que quiero, pero de una manera "sucia". Solo quiero hacer esto en una sola línea. En particular, no quiero hacer algo como
xterm -e 'ls'
exec bash
solución involucra dos subcapas separadas. Quiero una subshell continua.
exec
es que reemplaza el primer subshell con el segundo, por lo que solo te queda 1 shell debajo del padre. Si sus comandos de inicialización establecen variables de entorno, existirán en el shell ejecutado.
exec
es que pierde todo lo que no se transmite a subcapas a través del entorno, como variables no exportadas, funciones, alias, ...
exec bash
solución no es adecuada para usted?