mintty: как сохранить мой вывод видимым после завершения процессов?

463
ndemou

У меня есть ярлык на рабочем столе, который запускает скрипт cygwin bash, и я хочу, чтобы терминал mintty оставался открытым после завершения работы моего скрипта, чтобы я мог посмотреть на его вывод. Для этого я использую -h alwaysопцию mintty [1].

Окно остается открытым, но вывод mintty бесполезно очищается, как только мой сценарий завершается (!!!). Похоже, плохая шутка. Я что-то пропустил? Я проверил это поведение даже с помощью однострочного скрипта с эхом.


Примечание [1] -hописано так на странице руководства:

-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 ответа на вопрос

2
Michael Chu

Я провел несколько тестов, и -h alwaysмятный вариант сработал, как и ожидалось; экран не очистился, а окно оставалось открытым.

Вот точный ярлык "Target", который я использовал для запуска скрипта:

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

Я использую Mintty 2.7.7 (x86_64-pc-cygwin).

Надеемся, что обновление mintty и / или использование синтаксиса, как показано выше, исправят ваши проблемы. Если нет, вы можете вызвать паузу в самом скрипте, добавив readкоманду следующим образом:

echo 'Script end. Press ENTER to close' read 
Я использовал точно такие же параметры для mintty 2.7.9 (x86_64-pc-cygwin), поэтому это должно быть ошибкой. Спасибо за ваше время, Майкл. ndemou 6 лет назад 0
0
ndemou

В моем случае проблема была обнаружена в /etc/bash.bash_logout, который выполнял / usr / bin / clear при выходе из системы по соображениям конфиденциальности (я выполнял свой сценарий с bash --loginтаким завершением, что он завершает работу). После полезного ответа от Михаэля Чу (еще раз спасибо) я нашел ответ в процессе заполнения ошибки (первый шаг перед фактическим заполнением - посмотреть, уже сообщен ли он). Я вставляю соответствующую часть ответа в существующий отчет об ошибке по адресу https://github.com/mintty/mintty/issues/255#issuecomment-108889932 :

> 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