Digamos que comienzo en mi cuenta local:
avindra@host:~>
luego cambio a root:
host:~ #
Luego cambio al oráculo:
[ oracle@host:~]
¿Hay alguna manera de que regrese al shell raíz (el padre), sin cerrar sesión en el shell oráculo?
Sería conveniente en este caso, porque la cuenta de Oracle no tiene privilegios de sudo. Entonces, por ejemplo, estoy en el directorio / some / really / deeply / nested / en Oracle, y tengo todo tipo de variables de entorno especiales configuradas. Pero necesito volver a la raíz para tocar algunos archivos del sistema.
Actualmente, me retiraría del shell de Oracle para volver a la raíz, ejecutar mis comandos raíz y luego volver a Oracle. El inconveniente es que he iniciado sesión desde un nuevo comienzo y pierdo mi directorio y entorno de trabajo.
Dicho esto, ¿hay alguna manera de hacer lo que te pido?

Respuestas:
Puede simular un
CTRL-Z(que normalmente usa para poner en segundo plano temporalmente un proceso) usando elkillcomando:bashsolo atrapa laCTRL-Zcombinación de teclas.kill -19envíaSIGSTPal proceso que efectivamente es lo mismo.fuente
zshpuedes simplemente corrersuspend.zshocsh,tcshobash, o el shell Bourne oksh... (enksh, suspender es un alias para'kill -s STOP $$'(tenga en cuenta el error con las comillas faltantes alrededor de $$)).bashhace no trampa CTRL-Z, al presionar CTRL-Z, el emulador de terminal envía un^Zcarácter (0x1a) en el lado de transporte del dispositivo Pty. La disciplina de línea del controlador pty luego envía SIGTSTP al grupo de procesos en primer plano del terminal. Hasta entoncesbashno está involucrado en absoluto. Ese SIGTSTP puede hacer que el líder del grupo de procesos se suspenda y luego lowait()quebashsucede en él volverá.19será el número de SIGTSTP. Usekill -s TSTPokill -s STOP(TSTP puede ser atrapado o ignorado, STOP no puede).$$puede ser de solo lectura, peroIFSno lo es. TrateIFS=0123456789; suspenddekshpor ejemplo.Csh, bash, ksh, zsh, tienen un
suspendcomando incorporado (o alias, en ksh) que hace exactamente eso. Este comando es principalmente equivalente a enviar una señal TSTP al shell; bash y zsh hacen un poco de manejador de señal adicional y hacen malabarismos, y en estos shells elsuspendcomando funciona incluso si el shell actualmente ignora TSTP.También puede enviar la señal al shell manualmente con
kill -STOP $$.fuente
También sugeriría que podría usar (instalar si es necesario) un programa llamado
[screen][1]que le permite tener múltiples ventanas de terminal abiertas. Fue diseñado para TTYS, por lo que funciona bien sin necesidadX. Puede usar métodos abreviados de teclado para cambiar entre terminales y desconectar y cerrar sesión, dejando sus terminales aún en funcionamiento, luego vuelva a iniciar sesión y vuelva a conectarse a ellas.Creo que la mayoría de las distribuciones de Linux tienen paquetes para este programa, y he usado paquetes en Solaris para ello. El peor de los casos, por supuesto, es que puede instalar desde la fuente.
fuente