Cygwin bashスクリプトを開始するデスクトップショートカットがあり、スクリプトの終了後もminttyターミナルを開いたままにして、出力を確認できるようにします。この目的のために、私は-h always
minttyオプション[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.
スクリプトを_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
_
私はいくつかのテストを実行しました、そして-h always
minttyオプションは期待どおりに機能しました。画面はクリアされず、ウィンドウは開いたままでした。
スクリプトの実行に使用した正確なショートカット「ターゲット」は次のとおりです。
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