web-dev-qa-db-fra.com

Démarrer un nouveau shell bash à partir d'un shell bash

Je voudrais exécuter un programme de la bash Shell. Lorsque le programme est exécuté, il domine l'intégralité du Shell. J'aimerais donc démarrer un nouveau Shell et exécuter le programme à partir de là. Actuellement je fais:

gnome-terminal -x "cd Dropbox; program_name"

Cependant, cela me donne l'erreur. Échec d'exécution du processus enfant, pas de fichier ni de répertoire. Je crois que c’est parce que le nouveau terminal n’a pas le temps de s’initialiser. Comment puis-je réparer cela? 

14
providence

J'admets que cela ne répond pas vraiment à votre question, mais je pense que cela résout votre problème.

Pourquoi ne pas utiliser simplement & pour l’envoyer en arrière-plan. Vous pouvez voir s'il fonctionne toujours avec jobset le ramener au premier plan avec fgname__, vous pouvez également le renvoyer à l'arrière-plan, en le stoppant d'abord avec Ctrl+Z alors bgname__

Exemple à essayer.

> sleep 20 &
> jobs
> fg [jobNumber]
[Ctrl-Z]
> jobs
> bg [jobNumber]
> jobs
9
tjm

Essayer:

bash -c 'gnome-terminal -x cd /absolute-path && program_name'
9
lukasz

utilisez le chemin absolu du programme ou du CD avant d’appeler gnome-terminal. Et vous avez besoin d'un & pour le mettre en arrière-plan.

cd Dropbox; gnome-terminal -x "program_name" &
1
Kim Stebel

Essayez écran . C'est un simple brogramme qui vous permet de suivre plusieurs coquilles en même temps. Vous pouvez naviguer dans chacun des shells ouverts et même quitter la session et vous reconnecter plus tard.

1
grundprinzip

Essayez d’ajouter "&" à la fin de votre commande, par exemple:

gnome-terminal &

Je ne sais pas si cela fonctionne avec gnome-terminal, mais cela a bien fonctionné avec mrxvt.

0
patapizza
/bin/bash -c "/path/to/prog"

Mais examinez également la commande sleep.

0
user686605