On 5/12/26 12:32 PM, Zachary Santer wrote:
On Tue, May 12, 2026 at 10:07 AM Chet Ramey <[email protected]> wrote:
On 5/11/26 4:06 PM, Zachary Santer wrote:
Huh? Yeah, I would be one of those people.
Oh, OK. I thought your proposal would have bash unset `checkwinsize' if
it found LINES or COLUMNS in the initial environment.
Since many (most) terminal emulators set LINES and COLUMNS in the
environment they provide to the shell they invoke, and bash exports
variables it finds in its environment, this would effectively disable
any default that had it enabled.
I didn't know the initial values for LINES and COLUMNS were exported
from the terminal emulator.
I got curious, so I looked at this on Fedora 44, which runs bash-5.3.9.
It looks like I fooled myself. I couldn't tell where it was being set
until I hit on the job control code initializing the known terminal
state before running any commands. If `checkwinsize' is set, that sets
LINES and COLUMNS, so they are set in interactive shells but not
(initially) in non-interactive ones, since job control is not enabled.
If they were always exported from the environment, then they'd at
least not be initially unset in a noninteractive shell, which would
help.
Right. They are initially unset in non-interactive shells unless the
calling shell exports them.
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU [email protected] http://tiswww.cwru.edu/~chet/