On Fri, Oct 21, 2022 at 03:06:41PM +0200, Havard Eidnes wrote: > There's a definite size difference between csh and tcsh, > approximately 2x -- this is on NetBSD/amd64 9.x, and I include > /bin/sh for comparison: > > $ ls -lf /usr/pkg/bin/tcsh /bin/csh /bin/sh > -rwxr-xr-x 1 root wheel 408688 Jun 28 03:57 /usr/pkg/bin/tcsh > -r-xr-xr-x 1 root wheel 186712 Aug 4 17:30 /bin/csh > -r-xr-xr-x 1 root wheel 223632 Aug 4 17:30 /bin/sh > $ size /usr/pkg/bin/tcsh /bin/csh /bin/sh > text data bss dec hex filename > 382121 21158 86984 490263 77b17 /usr/pkg/bin/tcsh > 144864 7113 21664 173641 2a649 /bin/csh > 177881 6287 9928 194096 2f630 /bin/sh > $ > > The size difference might not matter much for modern machines > (and, yes, these are all dynamically linked).
Part of the difference is that both our /bin/sh and our /bin/csh are linked against libedit, while tcsh has similar code built in. Here are numbers from a sh4 machine running -current (where size does matter): [~] martin@last-of-the-heroes > ls -lf /usr/pkg/bin/tcsh /bin/csh /bin/sh -rwxr-xr-x 1 root wheel 317548 Jul 21 21:40 /usr/pkg/bin/tcsh* -r-xr-xr-x 1 root wheel 172408 Oct 18 08:14 /bin/csh* -r-xr-xr-x 1 root wheel 200032 Oct 18 08:15 /bin/sh* [~] martin@last-of-the-heroes > size /usr/pkg/bin/tcsh /bin/csh /bin/sh text data bss dec hex filename 303581 11942 81684 397207 60f97 /usr/pkg/bin/tcsh 142793 5237 20356 168386 291c2 /bin/csh 171161 3620 5764 180545 2c141 /bin/sh [~] martin@last-of-the-heroes > ldd /bin/csh /bin/csh: -ledit.3 => /lib/libedit.so.3 -lterminfo.2 => /lib/libterminfo.so.2 -lc.12 => /lib/libc.so.12 -lgcc_s.1 => /lib/libgcc_s.so.1 -lutil.7 => /lib/libutil.so.7 [~] martin@last-of-the-heroes > size /lib/libedit.so.3.1 text data bss dec hex filename 160125 4452 7584 172161 2a081 /lib/libedit.so.3.1 Martin