Ich habe einen Text-basiertes Spiel, Colossal Cave Adventure, dass ich mit einem Shell - Skript starten möchte , anstatt das Terminal und Typisierung von Öffnen cd ~/Desktop/CCA
und ./Adventure
. Der Code, den ich versuche zu verwenden, ist dieser:
#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
und die Nachricht, die ich erhalte, ist folgende:
There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
mit Optionen zum Ändern der Profileinstellungen oder zum Neustarten des Prozesses. Ich habe auch versucht, stattdessen den absoluten Pfad zu verwenden ~/
, und alle meine Dateinamen sind richtig geschrieben und verweisen auf die richtige Stelle. Was ist falsch?
gnome-terminal
Giaphage47
quelle
quelle
cd
kein Befehl war.cd
sicherlich ist ein Befehl! Es ist ein sogenannter Shell-Built-In-Befehl , wie Hasturs Antwort richtig angibt. Shell-Builtin-Befehle werden oft als "Shell-Builtins" oder kurz "Builtins" bezeichnet, sind aber absolut Befehle. Wascd
nicht ist, ist ein externer Befehl . Ubuntu hat keincd
Programm (und wenn dies der Fall ist, hat das Ausführen immer noch nicht den Effekt, dass das Verzeichnis in der Shell geändert wird, von der aus Sie es ausgeführt haben ). @ Giaphage47Der Fehler
Failed to execute child process "cd" (No such file or directory)
entsteht, weil
cd
einer der istSHELL BUILTIN COMMANDS
und keine ausführbare Datei, die Sie physisch auf Ihrer Festplatte finden.Um es oder die anderen
built-in
Befehle in Ihrem Skript auszuführen, müssen Sie die gesamte Zeile an einenbash
Aufruf übergebenWenn es keinen anderen internen Befehl gibt, den Sie ausführen müssen, können Sie das Arbeitsverzeichnis für das festlegen
gnome terminal
, wie gerade hier beantwortet :Ad nauseam : Es gibt einige Alternativen:
Wenn Sie sich nur in einem Terminal befinden, können Sie beides tun
ein
alias
likealias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
und setze es in dein
.bashrc
oder in dein,~/.bash_aliases
damit du es mit dem einzelnen BefehlStart_My_Game
in jeder Shell ausführen kannst, die du sein wirst.oder ein Skript, das Sie ausführbar machen (
chmod u+x MYscript
) undpath
einfügen können (in der Regel~/bin
ist dies ein guter Kandidat).Ich nehme an, Sie können einen Link auf Ihren Desktop setzen, der das Terminal ausführt und das Startverhalten ändert. Von der Gnomenhilfe
Wählen Sie Bearbeiten ▸ Profileinstellungen ▸ Titel und Befehl.
Aktivieren Sie "Benutzerdefinierten Befehl anstelle meiner Shell ausführen".
Geben Sie in das Textfeld den Befehl oder die gewünschte Shell ein.
Der Befehl wird genau so an das Terminal übergeben, wie Sie ihn schreiben, einschließlich aller von Ihnen angegebenen Argumente. Umgebungsvariablen werden vom Terminal geerbt, da es sich um einen untergeordneten Prozess des Terminals handelt.
Öffnen Sie eine neue Registerkarte oder ein neues Terminalfenster, um zu sehen, wie die benutzerdefinierte Shell oder der benutzerdefinierte Befehl ausgeführt werden
quelle
alias
(gemütlicheres) oder ein Skript in Ihrem ~ / bin-Verzeichnis aus, ohne ein neues Terminal zu startencd
aber Sie müssen es weitergebenbash
. Probieren Sie es aus :) -