From 4fd0875050647de12fa9d9de72370d38fb18701f Mon Sep 17 00:00:00 2001 From: ejc3 Date: Wed, 14 Oct 2026 00:55:42 +0000 Subject: [PATCH] regress: start panes with /bin/sh, not the login shell The Makefile runs each test under env -i, so SHELL is unset and the server's default-shell is the login shell from the password file. It runs every pane that has no command, as a login shell, and every pane command given as one string, with -c. zsh takes HOME from the password file when it is unset, so it reads the user's startup files and history. Twenty-six tests type a command into such a pane and give it a fixed time: twenty-five type an attach to a second server and sleep for a second, and session-ops.sh types a script and waits five seconds for it. When the login shell is slow to give a prompt, the checks run before the command has. zsh, for one, waits until a lock on a non-empty history file is ten seconds old. Set SHELL=/bin/sh in the environment the tests run in. --- regress/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regress/Makefile b/regress/Makefile index a4bcfc7a4..349fb5034 100644 --- a/regress/Makefile +++ b/regress/Makefile @@ -32,7 +32,7 @@ $(TESTS): prepare @base="$@"; base=$${base##*/}; \ log="$(LOGDIR)/$${base%.sh}.log"; \ start=$$(date +%s); \ - env -i LC_CTYPE=C.UTF-8 MallocNanoZone=0 \ + env -i LC_CTYPE=C.UTF-8 MallocNanoZone=0 SHELL=/bin/sh \ sh -x "$@" >"$$log" 2>&1; \ result=$$?; \ end=$$(date +%s); \