Muda para o shell pai sem sair

29

Digamos que eu comece na minha conta local:

avindra@host:~>

depois mudo para root:

host:~ #

Então eu mudo para o oracle:

[ oracle@host:~]

Existe uma maneira de eu voltar para o shell raiz (o pai), sem sair do shell oracle?

Seria conveniente, neste caso, porque a conta oracle não tem privilégios sudo. Então, por exemplo, eu estou no diretório / some / really / deeply / nested / no oracle, e eu tenho todos os tipos de variáveis de ambiente especiais configuradas. Mas preciso voltar à raiz para tocar em alguns arquivos do sistema.

Atualmente, eu abandonaria o oracle shell para voltar ao root, executar meus comandos de root e, em seguida, voltar para o Oracle. O inconveniente é que estou logado de novo e perco meu diretório e ambiente de trabalho.

Dito isto, existe alguma maneira de fazer o que eu estou pedindo?

    
por Avindra Goolcharan 19.12.2014 / 20:30

3 respostas

41

Você pode simular um CTRL-Z (que você normalmente usa para criar um plano de fundo temporariamente um processo) usando o comando kill :

[tsa20@xxx01:/home/tsa20/software]$ kill -19 $$

[1]+  Stopped                 sudo -iu tsa20
[root@xxx01 ~]# fg
sudo -iu tsa20
[tsa20@xxx01:/home/tsa20/software]$

bash apenas intercepta a combinação de teclas CTRL-Z . kill -19 envia SIGSTP para o processo que é efetivamente a mesma coisa.

    
por 19.12.2014 / 20:39
3

Csh, bash, ksh, zsh, tem um comando suspend builtin (ou alias, em ksh) que faz exatamente isso. Este comando é principalmente equivalente ao envio de um sinal TSTP para o shell; O bash e o zsh fazem um pouco de manipulador de sinais e malabarismo adicionais, e nesses shells o comando suspend funciona mesmo se o shell estiver atualmente ignorando o TSTP.

Você também pode enviar o sinal para o shell manualmente com kill -STOP $$ .

    
por 20.12.2014 / 23:57
0

Também gostaria de sugerir que você poderia usar (instalar, se necessário) um programa chamado [screen][1] , que permite abrir várias janelas de terminal. Ele foi projetado para TTYS, então funciona muito bem sem precisar de X . Você pode usar os atalhos de teclado para alternar entre os terminais e desconectar e desconectar, deixando os terminais ainda em execução, depois faça login novamente e reconecte-os a eles.

Eu acredito que a maioria das distribuições Linux tem pacotes para este programa, e eu usei pacotes no Solaris para isso. No pior dos casos, é claro, você pode instalar a partir da fonte.

    
por 23.12.2014 / 23:09

Tags