Verwirrung beim Konsolenbefehl unter Linux

Verwirrung beim Konsolenbefehl unter Linux

Ich habe versucht, ein neues Konsolenterminal und eine neue Quelldatei zu öffnen, nachdem ich sie geöffnet hatte. Ich habe den folgenden Befehl ausprobiert:

konsole -T hello --noclose -e "source file"

Ich wollte, dass das Terminal nach dem Einlesen der Datei geöffnet bleibt, aber selbst mit --nocloseder neuen Konsole wird es geschlossen. Wie kann ich dafür sorgen, dass die Konsole geöffnet bleibt?

Antwort1

Ich nehme an, Sie möchten nach dem Ausführen der Quelldatei eine interaktive Sitzung.

konsole verwendet system()- oder popen()-Aufrufe, um den Parameter -e auszuführen. source ist eine integrierte Bash-Funktion, Sie können sie also nicht einfach aufrufen.

Es ist schwierig, Bash anzuweisen, Befehle auszuführen und dann eine interaktive Sitzung zu starten. Es gibt die Optionen --init-file und --rc-file, aber diese werden anstelle Ihrer üblichen Konfigurationsdateien verwendet. Dies kann umständlich sein.

Ich denke, dieses Shell-Skript wird für Sie funktionieren.

#!/usr/bin/env bash
source file
exec bash    

Legen Sie es in die Datei "script.sh", machen Sie es ausführbar und starten Sie es auf diese Weise

# Edit script.sh
chmod +x script.sh
konsole -e ./script.sh

Ich vermute, Sie haben in Ihrer Datei einige Variablen festgelegt. Sie sollten exportiert werden, wenn sie in einer interaktiven Sitzung verwendet werden.

export VAR=value

Oder wenn Sie keine interaktive Sitzung benötigen, können Sie dieses Skript verwenden

#!/usr/bin/env bash
source file
echo "Press enter to exit"
read   

Nun ja. Es könnte auch in der Konsole einen Fehler geben. Wahrscheinlich sollten wir ihn melden.

verwandte Informationen