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 elkill
comando:bash
solo atrapa laCTRL-Z
combinación de teclas.kill -19
envíaSIGSTP
al proceso que efectivamente es lo mismo.fuente
zsh
puedes simplemente corrersuspend
.zsh
ocsh
,tcsh
obash
, 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 $$)).bash
hace no trampa CTRL-Z, al presionar CTRL-Z, el emulador de terminal envía un^Z
cará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 entoncesbash
no está involucrado en absoluto. Ese SIGTSTP puede hacer que el líder del grupo de procesos se suspenda y luego lowait()
quebash
sucede en él volverá.19
será el número de SIGTSTP. Usekill -s TSTP
okill -s STOP
(TSTP puede ser atrapado o ignorado, STOP no puede).$$
puede ser de solo lectura, peroIFS
no lo es. TrateIFS=0123456789; suspend
deksh
por ejemplo.Csh, bash, ksh, zsh, tienen un
suspend
comando 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 elsuspend
comando 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