Mintty: Wie halte ich meine Ausgabe sichtbar, nachdem Prozesse beendet wurden?

580
ndemou

Ich habe eine Desktop-Verknüpfung, mit der ein Cygwin-Bash-Skript gestartet wird, und ich möchte, dass das Mintty-Terminal nach dem Beenden meines Skripts geöffnet bleibt, damit ich mir die Ausgabe ansehen kann. Zu diesem Zweck verwende ich die -h alwaysMintty-Option [1].

Das Fenster bleibt offen, aber die Ausgabe wird von mintty nicht hilfreich gelöscht, genauso wie mein Skript beendet wird (!!!). Scheint ein schlechter Witz. Fehlt mir etwas? Ich habe dieses Verhalten auch mit einem einzeiligen Skript mit nur einem Echo überprüft.


Hinweis [1] -hwird in der Manpage folgendermaßen beschrieben:

-h, --hold never|start|error|always  Determine whether to keep the terminal window open when the command has finished and no more processes are connected to the terminal.  
0

2 Antworten auf die Frage

2
Michael Chu

Ich führte ein paar Tests durch und die -h alwaysMinze-Option funktionierte wie erwartet; Der Bildschirm wurde nicht gelöscht und das Fenster blieb offen.

Hier ist die genaue Verknüpfung "Target", die ich zum Ausführen eines Skripts verwendet habe:

C:\cygwin64\bin\mintty.exe -h always /usr/bin/bash -l ~/helloworld.bash 

Ich verwende mintty 2.7.7 (x86_64-pc-cygwin).

Wenn Sie mintty upgraden und / oder die Syntax wie oben gezeigt verwenden, wird das hoffentlich behoben. Wenn nicht, können Sie eine Pause im Skript selbst erzwingen, indem Sie einen readBefehl wie folgt hinzufügen :

echo 'Script end. Press ENTER to close' read 
Ich habe genau die gleichen Optionen mit Mintty 2.7.9 (x86_64-pc-cygwin) verwendet, also muss es ein Fehler sein. Danke für deine Zeit, Michael. ndemou vor 7 Jahren 0
0
ndemou

In meinem Fall wurde das Problem in /etc/bash.bash_logout gefunden, das aus Datenschutzgründen beim Abmelden mit / usr / bin / clear ausgeführt wurde (ich habe mein Skript ausgeführt, bash --loginso dass bei Abbruch eine Abmeldung erfolgt). Nach der hilfreichen Antwort von Michael Chu (nochmals vielen Dank) fand ich die Antwort beim Füllen eines Fehlers (der erste Schritt vor dem eigentlichen Füllen ist zu sehen, ob er bereits gemeldet wurde). Ich füge den relevanten Teil der Antwort auf den vorhandenen Fehlerbericht unter https://github.com/mintty/mintty/issues/255#issuecomment-108889932 ein :

> Hmm, the screen clearing is done by the latest /etc/bash.bash_logout:  # when leaving the console clear the screen to increase privacy if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear ] && /usr/bin/clear  fi