Twój konkretny błąd jest spowodowany niewłaściwym użyciem --execute
opcji. Jeśli spojrzysz na fragment strony man poniżej, zauważysz, że --execute
nie ma znaku równości wymienionego jako część składni, ponieważ po prostu wykonuje całą resztę wiersza poleceń. Przykładem prawidłowego użycia może być:
gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'
WAŻNA UWAGA: W każdym razie
używanie cd
jest trochę specjalnym przypadkiem. cd
nie jest jak większość poleceń - nie uruchamia własnego pliku binarnego / wykonywalnego. Jest interpretowany bezpośrednio przez bash
(lub jakąkolwiek powłokę, której używasz). Dlatego próba wywołania cd
nie zgadza się z flagami --execute
i -x
(które wydają się chcieć bezpośrednio odrodzić proces potomny). Ten sam problem wystąpi (sprawdziłem) z innymi poleceniami, które są przetwarzane bezpośrednio przez bash
like home
. Nawet przy prawidłowym użyciu, bez znaku równości, nadal spowoduje błąd: „Nie znaleziono pliku lub katalogu”. Dlatego użycie tej --working-directory=[DIRECTORY]
opcji jest najlepszym wyborem do robienia tego, co chcesz.
KOLEJNA WAŻNA UWAGA:
Nawet gdyby tak nie było, nadal będziesz miał kłopoty. Problem polega na próbie skorzystania z --execute
opcji, gdy rzeczywiście zamierzasz sens tej --command
opcji. W dokumentacji strony podręcznika jest to wyraźnie zaznaczone
-e, --command = STRING
Wykonaj argument tej opcji w terminalu.
-x, --execute
Wykonaj resztę wiersza poleceń wewnątrz terminala.
(moje podkreślenie)
Innymi słowy, prawdopodobnie nie będzie parsował tego w sposób, w jaki myślisz, że powinien. Użycie --execute
uniemożliwia przekazanie dalszych opcji do gnome-terminal
.
Fragment jednego z moich własnych skryptów, w którym uruchamiam wiele poleceń na osobnych kartach (zmieniono nazwy dla mojej prywatności / bezpieczeństwa):
gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"
(Nawiasem mówiąc, próba użycia --command
flagi z cd
lub home
spowoduje również znany błąd „Brak takiego pliku lub katalogu”).
Mam nadzieję, że to nie za długo. Po prostu staram się być dokładny.