Hide Forgot
Description of problem: When env. variable TERM=dumb thermostat shell gets broken. This only happens when stdin is read from pipe, redirected from file or using process substitution. Issuing commands manually seems to work normally. Steps to Reproduce: 1. run thermostat setup 2. export TERM=dumb 3. echo 'help\nexit\n' | scl enable thermostat1 "thermostat shell" Actual results: shell gets broken (input including newlines is not visible) Expected results: shell does not get broken Additional info: I have tried several values for TERM ( dumb, vt100, vt220, xterm-256color, random characters ) and only one dumb seems broken. Unseting TERM entirely also seems OK.
'dumb' is an actual valid terminal name: $ file /usr/share/terminfo/d/dumb /usr/share/terminfo/d/dumb: Compiled terminfo entry
3. step should have been echo -en 'help\nexit\n' | scl enable thermostat1 "thermostat shell" even though it doesn't really matter (wrong input works as well)
Seems to be a bug in jline. I can reproduce with thermostat1-jline2-2.10-70.5.el7.noarch but not if I replace /opt/rh/thermostat1/root/usr/share/java/jline2/jline.jar with the jline-2.9.jar from an upstream build of thermostat-1.4.
This might be caused by this fix: https://github.com/jline/jline2/commit/6f69925f53c07b0b5a8ecf45c18371413703b947 This actually fixes jline to detect TERM=dumb correctly (which it then handles by not echoing input?)
Here's a few examples of how other readline-using programs behave. I didn't set TERM here (my default is screen-256color). calc: $ echo -e '(1 + 2)\nexit\n' | calc 3 gdb: $ echo -e 'print $1\nquit\n' | gdb GNU gdb (GDB) Fedora 7.10.1-31.fc23 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". (gdb) History has not yet reached $1. (gdb) guile: $ echo -e '(write "Hi")\n(exit)\n' | guile GNU Guile 2.0.11 Copyright (C) 1995-2014 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. "Hi" sqlite3: $ echo -e '.help\n.exit\n' | sqlite3 .backup ?DB? FILE Backup DB (default "main") to FILE .bail on|off Stop after hitting an error. Default OFF .binary on|off Turn binary output on or off. Default OFF .changes on|off Show number of rows changed by SQL <output deleted> vfsname ?AUX? Print the name of the VFS stack .width NUM1 NUM2 ... Set column widths for "column" mode Negative values right-justify None of them display the input when the input is piped. Perhaps, from a sensible design point of view, we should do the same in Thermostat?
This bug happens in a very rare case (setting TERM to dumb), only affects the input being displayed - not the output - and occurs because of an upstream project (jline). Given the low impact and high amount of effort needed to fix this bug, I am closing this as WONTFIX in this release.