Como faço para criar uma janela como sudo de .screenrc

0

Eu criei um arquivo .screenrc para configurar automaticamente minhas várias janelas quando executo screen . Em uma janela, gostaria de: alternar para o usuário raiz e, em seguida, alterar para um determinado diretório. Atualmente faço isso manualmente depois de criar uma nova janela de tela da seguinte forma:

  • sudo bash
  • cd /etc/[dir]/

Como posso replicar isso em .screenrc ? Eu li em outro lugar que para executar múltiplos comandos em uma linha você pode usar && , mas eu não consigo fazer isso funcionar com sudo bash (presumivelmente porque ele cria uma nova instância bash e então o resto do comando os comandos são ignorados ou executados na nova instância e, em seguida, saem).

    
por BWPanda 28.08.2018 / 14:48

1 resposta

1

(presumably because it creates a new bash instance

Sim, é o mesmo com praticamente todos os mecanismos de troca de usuários ( su , sudo -s , etc.), mas sua variante torna muito óbvio que um novo processo bash está sendo executado.

and so the rest of the commands are either ignored or run in the new instance and then exited).

Não, o shell pai simplesmente espera que sudo - e, portanto, a nova instância do bash - saia. (Como seria com qualquer outro comando.)

  • O shell principal executa sudo bash e aguarda que ele saia.
    • o sudo executa bash e espera que ele saia.
        O
      • bash fornece um prompt interativo no qual você executa seus comandos root.
      • Quando você digita 'exit', o bash sai.
    • o sudo termina de esperar, limpa e sai também.
  • O shell principal termina de esperar, executa o próximo comando, se houver.

No entanto, você pode dizer a qualquer shell para executar comandos de maneira não interativa usando sua opção -c , que aceita uma única linha de comando: por exemplo, %código%. (Isso é usado nos bastidores por bash -c "cd /etc && ls" ou ssh .)

Para obter um shell interativo, certifique-se de que o último comando nesse subcomando seja um que execute um shell interativo. (Isso é bastante algumas instâncias bash profundas, mas não é realmente um problema.)

sudo bash -c "cd /etc/foo && bash"
    
por 28.08.2018 / 17:15

Tags