Führen Sie mehrere Befehle in einem Terminalfenster von Bash aus

0

Von einem Bash-Skript aus möchte ich ein öffnen LXTerminal Fenster und führen Sie mehrere Befehle aus, z.

lxterminal -e "echo 'Hello' && sleep 5"

Es liest nicht einmal den ersten Befehl (da ich versucht habe, die Reihenfolge umzukehren) und funktioniert auch nicht mit einem einfachen Befehl command1 ; command2 Kette. Offensichtlich funktioniert es mit einem einzigen Befehl.

Irgendwelche Ideen? Danke im Voraus.

Juan
quelle

Antworten:

1

Das ist ein Fehler dokumentiert mit lxterminal. Haben Sie ein alternatives Terminalprogramm zur Verfügung? xterm, gnome-terminal etc? lxterm (anders als lxterminal) bietet volle Unterstützung für das, was Sie versuchen, was in diesem Fehlerbericht beschrieben wird. Ich habe keinen einfachen Zugriff auf dieses Paket aus meiner Umgebung und habe es nicht angesehen.

Eine voll funktionsfähige Problemumgehung wäre, ein Shell-Skript zu generieren, das Ihre Befehlssequenz enthält, und den Befehl, der an lxterminal übergeben wird, einfach dieses Skript zu sein.

Führen Sie beispielsweise in dem Abschnitt Ihres Skripts, der diesen lxterminal-Aufruf ausführt, Folgendes aus:

tmpScript=$(mktemp -u) || { echo "tmp file generation error!"; exit 1; }
echo '#!/bin/bash' > $tmpScript
echo "echo 'Hello' && sleep 5" >> $tmpScript
chmod +x $tmpScript
lxterminal -e "$tmpScript"

Das funktioniert zumindest in meiner Umgebung (gespeist 24; x86_64; lxterminal Version 0.2.0, Kernel 4.6.5).

Es sei denn, lxterminal ist Ihre einzige Option, es ist nicht das richtige Werkzeug für diesen Job. In Anbetracht des Alters dieses Fehlers wird es wahrscheinlich niemals so sein. xterm ist in der Regel die beliebteste Option für diese Art von Dingen, da es portabel und benutzerfreundlich ist.

Argonauts
quelle
Oh ok danke Vermutlich installiere ich xterm und bete, dass LXTerminal repariert wird. Prost.
Juan
0

Sie können jedes andere Terminal verwenden, an dem dies funktioniert. Zum Beispiel in xterm das funktioniert:

xterm -e "echo 'Hello' && sleep 5"

Wie xterm ist ein Standard-Terminal-Emulator für X, dies sollte auch für Sie eine Lösung sein.

nox
quelle
0

Die Lösung besteht darin, es mit dem Modifikator --command so zu machen. lxterminal --command cd ~ / some / catalog & amp; & amp; hallo hallo

Nortberg
quelle