我有一个桌面快捷方式,用于启动 cygwin bash 脚本,我希望 mintty 终端在脚本终止后保持打开状态,以便我可以查看其输出。为此,我使用了-h always
mintty 选项[1]。
窗口确实保持打开状态,但当我的脚本终止时,mintty 毫无帮助地清除了输出(!!!)。这似乎是一个糟糕的笑话。我是不是漏掉了什么?我已经验证了这种行为,即使使用只有 echo 的一行脚本也是如此。
笔记[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.
答案1
我进行了一些测试,-h always
mintty 选项按预期工作;屏幕没有被清除并且窗口保持打开状态。
这是我用于运行脚本的确切快捷方式“目标”:
C:\cygwin64\bin\mintty.exe -h always /usr/bin/bash -l ~/helloworld.bash
我正在使用 mintty 2.7.7 (x86_64-pc-cygwin)。
read
希望升级 mintty 和/或使用如上所示的语法可以为您解决问题。如果没有,您可以通过添加如下命令在脚本本身内强制暂停:
echo 'Script end. Press ENTER to close'
read
答案2
我正在运行我的脚本,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