web-dev-qa-db-ja.com

mintty:プロセスの終了後に出力を表示し続ける方法は?

Cygwin bashスクリプトを開始するデスクトップショートカットがあり、スクリプトの終了後もminttyターミナルを開いたままにして、出力を確認できるようにします。この目的のために、私は-h alwaysminttyオプション[1]を使用しています。

ウィンドウは開いたままですが、スクリプトが終了するのと同じように、出力はminttyによって無力にクリアされます(!!!)。悪い冗談のようです。私は何かが足りないのですか?エコーだけの1行のスクリプトでも、この動作を確認しました。


[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
ndemou

スクリプトを_bash --login_で実行していたので、終了時に暗黙的に_/etc/bash.bash_logout_を呼び出します。これには、_/usr/bin/clear_( "プライバシーを高めるために")。


クレジット:答えを見つけました このバグレポートで これにはこの役立つ説明が含まれています:

_>  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
_
0
ndemou

私はいくつかのテストを実行しました、そして-h alwaysminttyオプションは期待どおりに機能しました。画面はクリアされず、ウィンドウは開いたままでした。

スクリプトの実行に使用した正確なショートカット「ターゲット」は次のとおりです。

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
4
Michael Chu