enviar comandos para nova bash e não fechar

0

Eu estou fazendo um script que precisa abrir uma nova instância do bash, digite alguns comandos e, em seguida, deixe-me continuar usando essa instância do bash. Como faço isso? Por enquanto eu tenho isso:

bash << EOF
    do_something()
EOF

Como faço essa nova chamada do bash chamar do_something () e, em seguida, deixe-me digitar outros comandos?

Edição posterior:

Na verdade, estou usando outro comando interno da empresa, sobre o qual não tenho controle, que faz algo por trás dos bastidores e depois me dá uma festança pré-configurada. É por isso que eu dei esse exemplo de envio de comandos. Porque pode ser configurado para qualquer intérprete.

Catalin Vasile
fonte
Por que você precisa "abrir uma nova instância de bash"? Você poderia expandir seu objetivo maior?
StandardEyre
stackoverflow.com/a/7193037 Eu acho que isso é o que você queria.
Marek Rost
@MarekRost Atualizei meu post. Não é o que eu queria. Pense em um interpretador aleatório que é chamado de bash. Eu quero enviar alguns comandos e, em seguida, deixe-me digitar outros comandos manualmente.
Catalin Vasile

Respostas:

2

Use um subshell e canalize-o para bater. 'script' pode ajudar também:

user@name:~$ (printf '%s\n' 'echo 1' 'echo 2'; cat) | bash
1
2
echo 3
3
user@name:~$ # DON'T do this: (printf '%s\n' 'echo 1' 'echo 2'; cat) | bash -i
user@name:~$ (printf '%s\n' 'echo 1' 'echo 2'; cat) | script -c 'bash -i' /dev/null
++++Skript gestartet, die Datei ist /dev/null
++++user@name:~$ 1
++++user@name:~$ 2
++++user@name:~$ echo 3
++++3
++++user@name:~$ Skript wurde beendet, die Datei ist /dev/null
user@name:~$ 

Observação: os sinais de adição não aparecem, adicionei-os para esclarecer a parte do 'script'.

Ao invés de script -c 'bash -i' /dev/null você pode usar script /dev/null Enquanto o script comando invoca bash -i por padrão.

u_Ltd.
fonte