У меня есть ярлык на рабочем столе, который запускает скрипт 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. 

2 ответа2

2

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

Вот точный ярлык "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
0

В моем случае проблема была обнаружена в /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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .