The Fish shell up to 3.7.1 has $__fish_sysconf_dir point to /etc/fish and therefore loads config, completions and functions from /etc/fish/conf.d/ /etc/fish/config.fish /etc/fish/completions/ /etc/fish/functions/ Version app-shells/fish-4.0.0 has variable $__fish_sysconf_dir set to wrong default /usr/share/etc/fish and ignores all of the above configurations. Following from wrong $__fish_sysconf_dir the path lists $fish_complete_path $fish_function_path have the wrong entries of /usr/share/etc/fish/completions /usr/share/etc/fish/functions instead of the directories given above. Unfortunately I can't tell whether this is a problem of the Gentoo / Rust build environment or if the problem exists upstream. https://fishshell.com/docs/current/language.html#configuration-files As a workaround one can move the ignored files to /usr/local/share/fish/vendor_conf.d /usr/local/share/fish/vendor_completions.d /usr/local/share/fish/vendor_functions.d Reproducible: Always Steps to Reproduce: Compare $__fish_sysconf_dir of Fish 3.7.1 and 4.0.0, for example with set --show | grep fish_sysconf_dir in a Fish shell. Portage 3.0.66.1 (python 3.13.2-final-0, default/linux/amd64/23.0/no-multilib/hardened, gcc-14, glibc-2.40-r8, 6.6.80-gentoo-metaphysis x86_64) ================================================================= System uname: Linux-6.6.80-gentoo-metaphysis-x86_64-Intel-R-_Core-TM-_i7-4790_CPU_@_3.60GHz-with-glibc2.40 KiB Mem: 32558040 total, 15760276 free KiB Swap: 4194300 total, 4194300 free Timestamp of repository gentoo: Thu, 06 Mar 2025 13:15:00 +0000 Head commit of repository gentoo: 36508f40390a65ca5d92409213664fc28ebd7a81 sh bash 5.2_p37 ld GNU ld (Gentoo 2.44 p1) 2.44.0 app-misc/pax-utils: 1.3.8::gentoo app-shells/bash: 5.2_p37::gentoo dev-build/autoconf: 2.72-r1::gentoo dev-build/automake: 1.17-r1::gentoo dev-build/cmake: 3.31.5::gentoo dev-build/libtool: 2.5.4::gentoo dev-build/make: 4.4.1-r100::gentoo dev-build/meson: 1.6.1::gentoo dev-java/java-config: 2.3.4::gentoo dev-lang/perl: 5.40.0-r1::gentoo dev-lang/python: 3.12.9::gentoo, 3.13.2::gentoo dev-lang/rust-bin: 1.77.1-r102::gentoo, 1.84.1-r2::gentoo llvm-core/clang: 19.1.7::gentoo llvm-core/llvm: 19.1.7::gentoo sys-apps/baselayout: 2.17::gentoo sys-apps/openrc: 0.56::gentoo sys-apps/sandbox: 2.39::gentoo sys-devel/binutils: 2.44::gentoo sys-devel/binutils-config: 5.5.2::gentoo sys-devel/gcc: 14.2.1_p20241221::gentoo sys-devel/gcc-config: 2.12.1::gentoo sys-kernel/linux-headers: 6.12::gentoo (virtual/os-headers) sys-libs/glibc: 2.40-r8::gentoo
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1a1c462aff3c8d781088e6e82debd0ca5d756d70 commit 1a1c462aff3c8d781088e6e82debd0ca5d756d70 Author: idealseal <realidealseal@protonmail.com> AuthorDate: 2025-03-10 11:07:29 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2025-03-11 09:10:40 +0000 app-shells/fish: inject proper sysconfdir Older fish versions used /etc/fish as the sysconfdir and if not set explicitly fish 4 will default to /usr/share/etc/fish. Closes: https://bugs.gentoo.org/950699 Signed-off-by: idealseal <realidealseal@protonmail.com> Signed-off-by: Sam James <sam@gentoo.org> app-shells/fish/{fish-4.0.0.ebuild => fish-4.0.0-r1.ebuild} | 3 +++ 1 file changed, 3 insertions(+)
Thanks for fixing this! Fish 4.0.0-r1 now works as documented.