Mam grę tekstowego, Colossal Cave Adventure, że chciałbym, aby uruchomić ze skryptu powłoki zamiast otwierania terminal i wpisując cd ~/Desktop/CCA
i ./Adventure
. Kod, którego próbuję użyć, jest następujący:
#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
a wiadomość, którą otrzymuję, jest następująca:
There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
z opcjami zmiany preferencji profilu lub ponownego uruchomienia procesu. Próbowałem również użyć ścieżki bezwzględnej zamiast ~/
, a wszystkie moje nazwy plików są poprawnie przeliterowane i wskazują właściwe miejsce. Co jest nie tak?
gnome-terminal
Giaphage47
źródło
źródło
cd
to nie było polecenie.cd
z pewnością jest rozkazem! Jest to tak zwane polecenie wbudowane w powłokę , jak słusznie stwierdza odpowiedź Hastura. Polecenia wbudowane w powłokę są często nazywane „wbudowanymi powłokami” lub „wbudowanymi” w skrócie, ale są to polecenia absolutnie. To, cocd
nie jest, jest poleceniem zewnętrznym . Ubuntu nie macd
programu (a jeśli tak, to uruchomienie go nadal nie zmieniłoby katalogu w powłoce, z której go uruchomiłeś ). @ Giaphage47Błąd
Failed to execute child process "cd" (No such file or directory)
powstaje, ponieważ
cd
jest to jeden zSHELL BUILTIN COMMANDS
plików wykonywalnych, które fizycznie znajdują się na dysku twardym.Aby uruchomić go lub inne
built-in
polecenia w skrypcie, musisz przekazać całą linię dobash
wywołaniaJeśli nie ma innego wewnętrznego polecenia do wykonania, możesz ustawić katalog roboczy dla
gnome terminal
, jak właśnie tutaj odpowiedziano :Ad nauseam : istnieje kilka alternatyw:
Jeśli jesteś tylko w terminalu, możesz to zrobić
alias
polubalias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
i umieść go w swoim
.bashrc
lub wewnątrz~/.bash_aliases
, abyś mógł uruchomić za pomocą jednego poleceniaStart_My_Game
w każdej powłoce, którą będziesz (wygodniej jest wybrać prostszą / krótszą nazwę niż Start_My_Game ...)lub skrypt, który można wykonać w pliku wykonywalnym (
chmod u+x MYscript
) i wstawić do niegopath
(typowo~/bin
jest dobrym kandydatem).Podejrzewam, że możesz umieścić link na pulpicie, który uruchamia terminal i zmodyfikować zachowanie początkowe. Z pomocy gnome
Wybierz Edytuj ferences Preferencje profilu ▸ Tytuł i polecenie.
Zaznacz Uruchom niestandardowe polecenie zamiast mojej powłoki.
W polu tekstowym wpisz polecenie lub żądaną powłokę.
Polecenie zostanie przekazane do terminala dokładnie tak, jak piszesz, wraz z podanymi argumentami. Zmienne środowiskowe zostaną odziedziczone z terminala, ponieważ jest to proces potomny terminala.
Otwórz nową kartę lub okno terminala, aby zobaczyć, jak działa niestandardowa powłoka lub polecenie
źródło
alias
(bardziej przytulny) lub skrypt w katalogu ~ / bin, bez uruchamiania nowego terminalucd
ale musisz ją przekazaćbash
. Sprawdź to :) -