J'ai un jeu textuel, Colossal Cave Adventure, que je voudrais lancer avec un script shell au lieu d'ouvrir le terminal et de taper cd ~/Desktop/CCA
et ./Adventure
. Le code que j'essaie d'utiliser est le suivant:
#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
et le message que je reçois est le suivant:
There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
avec des options pour modifier les préférences de profil ou relancer le processus. J'ai également essayé d'utiliser le chemin absolu au lieu de ~/
, et tous mes noms de fichiers sont correctement orthographiés et pointent au bon endroit. Qu'est-ce qui ne va pas?
gnome-terminal
Giaphage47
la source
la source
cd
n'était pas une commande.cd
est certainement une commande! C'est ce qu'on appelle une commande intégrée au shell , comme l' indique correctement la réponse de Hastur . Les commandes intégrées du shell sont souvent appelées "intégrées au shell" ou "intégrées" pour faire court, mais ce sont absolument des commandes. Ce quicd
ne l'est pas, c'est une commande externe . Ubuntu n'a pas decd
programme (et s'il le faisait, son exécution n'aurait toujours pas pour effet de changer le répertoire dans le shell à partir duquel vous l'avez exécuté ). @ Giaphage47L'erreur
Failed to execute child process "cd" (No such file or directory)
survient car
cd
est l'un desSHELL BUILTIN COMMANDS
et non un exécutable que vous trouvez physiquement sur votre disque dur.Pour l'exécuter ou les autres
built-in
commandes de votre script, vous devez passer toute la ligne à unebash
invocationS'il n'y a aucune autre commande interne que vous devez exécuter, vous pouvez définir le répertoire de travail pour le
gnome terminal
, comme il vient d'être répondu ici :Ad nauseam : il existe des alternatives:
Si vous êtes juste dans un terminal, vous pouvez soit faire
un
alias
likealias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
et mettez-le dans votre
.bashrc
ou dans~/.bash_aliases
pour que vous puissiez exécuter la commande uniqueStart_My_Game
dans chaque shell que vous serez (il est plus confortable de choisir un nom plus simple / court que Start_My_Game ...)ou un script que vous pouvez rendre exécutable (
chmod u+x MYscript
) et mettre dans votrepath
(~/bin
est typiquement un bon candidat).Je suppose que vous pouvez mettre un lien sur votre bureau qui exécute le terminal et modifie le comportement de démarrage. De l'aide gnome
Sélectionnez Édition Prefer Préférences de profil ▸ Titre et commande.
Cochez Exécuter une commande personnalisée au lieu de mon shell.
Dans la zone de texte, tapez la commande ou le shell souhaité.
La commande sera transmise au terminal exactement comme vous l'écrivez, y compris tous les arguments que vous spécifiez. Les variables d'environnement seront héritées du terminal car il s'agit d'un processus enfant du terminal.
Ouvrez un nouvel onglet ou une nouvelle fenêtre de terminal pour voir comment le shell ou la commande personnalisée s'exécute
la source
alias
(plus confortable) ou un script dans votre répertoire ~ / bin, sans lancer un nouveau terminalcd
mais vous devez le passer àbash
. Donnez-lui un chèque :) -