[Bug 297394] Default shell changing from csh to sh has unexpected fallout
Date: Tue, 11 Aug 2026 15:59:36 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297394
--- Comment #16 from Jeremy Chadwick <jdc@koitsu.org> ---
@Benjamin Let's be clear: THIS IS A FREEBSD PROBLEM, NOT A SPAMASSASSIN
PROBLEM. The fact this works fine on Linux, previous FreeBSD versions, and
non-sh shells demonstrates that fact. I was on the fence about opening a bug
on this anyway because I knew, 9 out of 10 odds, it would devolve into time
vampirism. I have every right to be irritated: FreeBSD src committers made
this change, FreeBSD src committers therefore own it. I spent almost an hour
after upgrading to figure out what the heck was going on and, rather than risk
hand-hacking the hashbang lines and sa-compile lines pertaining to re2c path, I
changed root shell back to csh and decided to report this due to the sheer
surprise (hence why I chose "affects many people"). Do not make this a "Jeremy
problem" or a "Perl problem" or a "SpamAssassin" problem. I am not going to
truss or ktrace this and delve into various forks and syscalls; those
responsible for this change can do that, as they own it.
@cy I've never ever made any changes to /root/.profile, but FreeBSD 15.1
modified the file (I can tell from daily backups after upgrading from 15.0 to
15.1), ditto with /root/.shrc. Here you go:
$ cat /root/.profile
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:~/bin
export PATH
TERM=${TERM:-xterm}
export TERM
PAGER=less
export PAGER
# set ENV to a file invoked each time sh is started for interactive use.
ENV=$HOME/.shrc; export ENV
# Query terminal size; useful for serial lines.
if [ -x /usr/bin/resizewin ] ; then /usr/bin/resizewin -z ; fi
# Uncomment to display a random cookie on each login.
# if [ -x /usr/bin/fortune ] ; then /usr/bin/fortune -s ; fi
Seems /root dotfiles do not come from skel (/usr/share/skel) like in olden
days, but from src/bin/sh directory. Looks like this was done starting 2019.
Regardless, both set ENV. Compare my above contents to:
https://github.com/freebsd/freebsd-src/blob/releng/15.1/bin/sh/dot.profile
vs.
https://github.com/freebsd/freebsd-src/blob/releng/15.1/share/skel/dot.profile
This is not a local problem. Or maybe you are becoming root in such a way that
does not bring in a full/clean environment (e.g. "sudo su -" and instead just
using "sudo", or alternately you can log in as root at console. I am 100%
certain you can reproduce this on a stock system). Regardless, one cannot deny
what's going on with ENV env var and it being set by FreeBSD dotfiles for root.
No idea what is going on with sa-compile and PATH; as said, someone else can
figure out that mess.
@Helge A fresh SpamAssassin install needs to have sa-update run manually, ditto
with sa-compile. This is a bigger problem with much wider impact lying in
wait. It's Perl's taint mode today (partially), but something else tomorrow.
The default shell change happened in January 2026, so for literally 8 months
nobody noticed anything -- mindblowing.
--
You are receiving this mail because:
You are the assignee for the bug.