envoyer des commandes à nouveau bash et ne pas fermer


0

Je crée un script qui doit ouvrir une nouvelle instance bash, entrer des commandes, puis me laisser continuer à utiliser cette instance bash. Comment je fais ça? Pour l'instant j'ai ceci:

bash << EOF
    do_something()
EOF

Comment est-ce que je fais cette nouvelle instance de bash appeler do_something () et ensuite me laisse entrer d'autres commandes?

Éditer plus tard:

En fait, j'utilise un autre commandement interne de la société, sur lequel je n'ai aucun contrôle, qui fait quelque chose en coulisse, puis qui me donne une bash préconfigurée. C'est pourquoi j'ai donné cet exemple d'envoi de commandes. Parce qu'il peut être configuré pour n'importe quel interprète.


Pourquoi avez-vous besoin "d'ouvrir une nouvelle instance bash"? Pourriez-vous développer votre objectif plus large?
StandardEyre

stackoverflow.com/a/7193037 Je pense que c'est ce que tu voulais.
Marek Rost

@MarekRost J'ai mis à jour mon message. Ce n'est pas ce que je voulais. Pensez à un interprète aléatoire appelé à partir de bash. Je veux lui envoyer des commandes et me laisser taper d'autres commandes manuellement.
Catalin Vasile

Réponses:


2

Utilisez un sous-shell et dirigez-le vers bash. 'script' peut aussi aider:

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:~$ 

Remarque: les signes plus n'apparaissent pas du tout, je les ai ajoutés pour clarifier la partie "script".

Au lieu de, script -c 'bash -i' /dev/nullvous pouvez utiliser script /dev/nullcomme scriptinvocation bash -ide la commande par défaut.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.