Forum: PC-Programmierung Terminal Befehl Linux


von noname (Gast)


Lesenswert?

Hallo!

Mein Terminal unter Linux Mint reagiert auf den Befehl:
1
gnome-terminal -e "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160" --geometry=84x80+0+0

mit folgender Fehlermeldung:

There was an error creating the child process for this terminal

Failed to execute child process 
"~/Dokumente/Programmieren/uno/uno/bin/Debug/uno" (No such file or 
directory)

Der Pfad

[/code]~/Dokumente/Programmieren/uno/uno/bin/Debug/uno[/code]

alleine im gnome-terminal funktioniert.

Auch der Befehl
1
gnome-terminal --geometry=84x80+0+0

alleine funktioniert im Terminal, nur beides gemeinsam nicht.

Auch
1
gnome-terminal -x "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160" --geometry=84x80+0+0

und
1
gnome-terminal -e "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160"

bringen die Fehlermeldung.

Was mache ich falsch??

Danke im Vornherein!

von T.roll (Gast)


Lesenswert?

Finde den Unterschied:
"~/Dokumente/Programmieren/uno/uno/bin/Debug/uno"

"~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Die Tilde wird nur von einer Shell zum Inhalt von $HOME expandiert.
Wenn du das Terminal mit -e aufrufst, hast du aber keine Shell mehr
im Spiel.

Ruf's mal mit dem kompletten ausgeschriebenen Pfadnamen auf.

von Konrad S. (maybee)


Lesenswert?

@T.roll (Gast)
Was aber das hier

noname schrieb:
> Failed to execute child process
> "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno" (No such file or
> directory)

nicht erklärt.

Ich tippe auf die Tilde. Da in der Fehlermeldung noch die Tilde 
enthalten ist, löst die ausführende Shell die Tilde nicht auf und es 
ergibt sich ein ungültiger Pfad. Was dann zu obiger Fehlermeldung führt. 
Ersetzen der Tilde durch das Home-Directory sollte das Problem lösen.

Edit: Jörg war schneller.
Aber eine Shell ist immer noch im Spiel.

: Bearbeitet durch User
von Rolf Magnus (Gast)


Lesenswert?

Konrad S. schrieb:
> Edit: Jörg war schneller.
> Aber eine Shell ist immer noch im Spiel.

Ja, wenn es von einem anderen Terminal aus aufgerufen wird. In einem 
.desktop-File mag das aber anders sein. Es ist ja letztlich unbekannt, 
von wo aus diese Zeile aufgerufen wird.
Wie dem auch sei: Die shell löst die Tilde nicht auf, wenn sie in 
Anführungszeichen steht. Man könnte spaßeshalber mal probieren:
1
gnome-terminal -e ~"/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160" --geometry=84x80+0+0

von Rene H. (Gast)


Lesenswert?

Die Tilde alleine wird kaum das einzige Problem sein. Ich vermute eher, 
dass das komplette Environment fehlt (auch $HOME, aber auch $PATH und 
$LD_LIBRARY_PATH).
Das erklärt es weshalb es im Terminal mit der Shell ging und sonst 
nicht.


Grüsse,
R.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rene H. schrieb:
> Die Tilde alleine wird kaum das einzige Problem sein.

Doch, ich denke schon.  In der aufrufenden Shell wurde die Expansion
der Tilde durch die Anführungszeichen verhindert, und eine aufgerufene
Shell gibt es nicht.  Das Terminal will die angegebene Datei (mit
der Tilde im Namen) per execve() ausführen, aber das geht nicht.

von Amateur (Gast)


Lesenswert?

Heißt der Adressat würglich: "uno 160"?

Ein Quiektest könnte lauten:
ls "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160"
... oder so.

von Rolf Magnus (Gast)


Lesenswert?

Rene H. schrieb:
> Die Tilde alleine wird kaum das einzige Problem sein. Ich vermute eher,
> dass das komplette Environment fehlt (auch $HOME, aber auch $PATH und
> $LD_LIBRARY_PATH).

Warum sollte es?

> Das erklärt es weshalb es im Terminal mit der Shell ging und sonst
> nicht.

Die Tilde erklärt das schon. Beim direkten Aufruf aus der Shell heraus 
wurde sie nämlich nicht in Anführungszeichen angegeben.

von Konrad S. (maybee)


Lesenswert?

Wäre keine Shell im Spiel, dann wäre die Fehlermeldung nicht

> Failed to execute child process
> "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno" (No such file or
> directory)

sondern

> Failed to execute child process
> "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno 160" (No such file or
> directory)

von Jay W. (jayway)


Lesenswert?

Mmh,

muss das Leerzeichen im Pfad bei "uno 160" nicht maskiert werden?

gnome-terminal -e "~/Dokumente/Programmieren/uno/uno/bin/Debug/uno\ 160" 
--geometry=84x80+0+0

von Kaj (Gast)


Lesenswert?

Jay W. schrieb:
> muss das Leerzeichen im Pfad bei "uno 160" nicht maskiert werden?

Nein, deswegen steht der Pfad ja in " "

von Konrad S. (maybee)


Lesenswert?

Konrad S. schrieb:
> Wäre keine Shell im Spiel

Ich nehme das mit der Shell zurück. gnome-terminal splittet einfach nur 
am Whitespace in einzelne Argumente und versucht das erste Argument 
auszuführen. Und da ist die Tilde hinderlich.

von Rene H. (Gast)


Lesenswert?

So, ich habe das mal geprüft auf einer G7 mit SLES11SP2.
Die " Zeichen sind dem ziemlich Wurscht. Das Tilde aber auch. Die 
Meldung kommt auch wenn man mit /home/xxx/" aufruft.

Weiter habe ich nichts gesucht.

Grüsse,
R.

von Jay W. (jayway)


Lesenswert?

Bei mir funktioniert folgender Aufruf:

gnome-terminal  --working-directory ~/Dokumente/uno\ 160 
--geometry=84x80+0+0

folgender übrigens nicht:

gnome-terminal  --working-directory "~/Dokumente/uno 160" 
--geometry=84x80+0+0

Trotz Anführungszeichen scheitert die Auflösung von uno 160. Zur 
Ursachenforschung ist mir heute zu spät. ;-) Ich habe die Pfadangabe mal 
etwas gekürzt, ich wollte nicht so viele Verzeichnisse anlegen...

: Bearbeitet durch User
von Jay W. (jayway)


Lesenswert?

Nachtrag: Zur Ausführung eines Befehls hat sich folgender Weg als 
gangbar abgezeichnet:

gnome-terminal --working-direktory ~/hier/irgend/wo -e ./programm 
--geo....

von Rolf Magnus (Gast)


Lesenswert?

Jay W. schrieb:
> Trotz Anführungszeichen scheitert die Auflösung von uno 160.

Aufgrund der Anführungszeichen scheitert immer noch die Auflösung von ~.

von noname (Gast)


Lesenswert?

Danke für die Tipps!

Die Tilde war´s. Ohne Tilde funktioniert´s super.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.