1*3fe5961aSDevin Teske.\" Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org> 2*3fe5961aSDevin Teske.\" Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org> 3*3fe5961aSDevin Teske.\" 4*3fe5961aSDevin Teske.\" SPDX-License-Identifier: BSD-2-Clause 5*3fe5961aSDevin Teske.\" 6*3fe5961aSDevin Teske.Dd August 2, 2026 7*3fe5961aSDevin Teske.Dt SYSCONF-TARGETS 8 8*3fe5961aSDevin Teske.Os 9*3fe5961aSDevin Teske.Sh NAME 10*3fe5961aSDevin Teske.Nm sysconf-targets 11*3fe5961aSDevin Teske.Nd sysconf multi-file sourcing and write policy 12*3fe5961aSDevin Teske.Sh SYNOPSIS 13*3fe5961aSDevin Teske.Nm sysconf 14*3fe5961aSDevin Teske.Ar target 15*3fe5961aSDevin Teske.Op options 16*3fe5961aSDevin Teske.Op Ar name Ns Op Ns Oo +|- Oc Ns = Ns Ar value ... 17*3fe5961aSDevin Teske.Sh DESCRIPTION 18*3fe5961aSDevin TeskeThis page documents rules shared by every 19*3fe5961aSDevin Teske.Xr sysconf 8 20*3fe5961aSDevin Tesketarget that is backed by more than one configuration file. 21*3fe5961aSDevin TeskePer-target file lists and syntax quirks are in 22*3fe5961aSDevin Teske.Xr sysconf-loader 8 , 23*3fe5961aSDevin Teske.Xr sysconf-sysctl 8 , 24*3fe5961aSDevin Teske.Xr sysconf-make 8 , 25*3fe5961aSDevin Teske.Xr sysconf-src 8 , 26*3fe5961aSDevin Teske.Xr sysconf-rc 8 , 27*3fe5961aSDevin Teskeand 28*3fe5961aSDevin Teske.Xr sysconf-generic 8 . 29*3fe5961aSDevin TeskeShared options remain in 30*3fe5961aSDevin Teske.Xr sysconf 8 . 31*3fe5961aSDevin Teske.Ss Authoritative file 32*3fe5961aSDevin TeskeMost targets consult several files in the deterministic order the system 33*3fe5961aSDevin Teskesources them at boot. 34*3fe5961aSDevin TeskeA directive in a later file overrides the same directive in an earlier one, 35*3fe5961aSDevin Teskeso the last file listing a directive is the authoritative source of its 36*3fe5961aSDevin Teskevalue. 37*3fe5961aSDevin Teske.Pp 38*3fe5961aSDevin TeskeReads report that authoritative value. 39*3fe5961aSDevin TeskeWrites are applied to the authoritative file 40*3fe5961aSDevin Teske.Pq so the change survives a reboot 41*3fe5961aSDevin Teskeor appended to the target's default write file 42*3fe5961aSDevin Teske.Pq the first modifiable file listed 43*3fe5961aSDevin Teskewhen the directive is set nowhere or only in the read-only defaults. 44*3fe5961aSDevin TeskeRemovals 45*3fe5961aSDevin Teske.Pq Fl x 46*3fe5961aSDevin Teskeare applied to every file listing the directive, 47*3fe5961aSDevin Teskelest deleting the authoritative definition merely unmask an earlier one. 48*3fe5961aSDevin Teske.Ss Defaults files 49*3fe5961aSDevin TeskeFor a target with a defaults file 50*3fe5961aSDevin Teske.Po 51*3fe5961aSDevin Teskepresently 52*3fe5961aSDevin Teske.Ql loader ; 53*3fe5961aSDevin Teskesee 54*3fe5961aSDevin Teske.Xr sysconf-loader 8 55*3fe5961aSDevin Teske.Pc , 56*3fe5961aSDevin Teskethe boot-time consumer sources the defaults before everything else, 57*3fe5961aSDevin Teskeand so does 58*3fe5961aSDevin Teske.Nm sysconf : 59*3fe5961aSDevin Teskea directive no conf file mentions still reads back its default 60*3fe5961aSDevin Teske.Pq the value that does, in fact, take effect at boot , 61*3fe5961aSDevin Teskewith 62*3fe5961aSDevin Teske.Fl F 63*3fe5961aSDevin Tesketruthfully naming the defaults file as its source. 64*3fe5961aSDevin TeskeThe defaults file is nevertheless read-only bookkeeping: 65*3fe5961aSDevin Teskeit is never chosen as a write target, 66*3fe5961aSDevin Teskenever satisfies a removal, 67*3fe5961aSDevin Teskeand is never listed by 68*3fe5961aSDevin Teske.Fl l 69*3fe5961aSDevin Teskeor 70*3fe5961aSDevin Teske.Fl L 71*3fe5961aSDevin Teske.Pq which enumerate only files Nm sysconf may modify . 72*3fe5961aSDevin Teske.Pp 73*3fe5961aSDevin TeskeThose targets additionally support querying defaults: 74*3fe5961aSDevin Teske.Fl d 75*3fe5961aSDevin Teskereports directive descriptions, 76*3fe5961aSDevin Teske.Fl D 77*3fe5961aSDevin Teskeconsults the defaults alone, 78*3fe5961aSDevin Teskeand 79*3fe5961aSDevin Teske.Fl A 80*3fe5961aSDevin Teskewidens dumps to include directives still at their system default 81*3fe5961aSDevin Teske.Po 82*3fe5961aSDevin Teskea named 83*3fe5961aSDevin Teske.Ar name 84*3fe5961aSDevin Teskeread always reflects the defaults already; 85*3fe5961aSDevin Teske.Fl A 86*3fe5961aSDevin Teskechanges only 87*3fe5961aSDevin Teske.Fl a 88*3fe5961aSDevin Teskescope, 89*3fe5961aSDevin Teskeor dumps everything when given with no 90*3fe5961aSDevin Teske.Ar name 91*3fe5961aSDevin Teskearguments 92*3fe5961aSDevin Teske.Pc . 93*3fe5961aSDevin TeskeAttempting any of these against a target with no defaults 94*3fe5961aSDevin Teske.Po 95*3fe5961aSDevin Teske.Cm make 96*3fe5961aSDevin Teskeand 97*3fe5961aSDevin Teske.Cm src 98*3fe5961aSDevin Teskehave neither a defaults file nor directive descriptions 99*3fe5961aSDevin Teske.Pc 100*3fe5961aSDevin Teskeis an error. 101*3fe5961aSDevin TeskeThe one exception is 102*3fe5961aSDevin Teske.Ql sysctl -d , 103*3fe5961aSDevin Teskewhose descriptions come from the running kernel rather than any file 104*3fe5961aSDevin Teske.Pq see Xr sysconf-sysctl 8 . 105*3fe5961aSDevin Teske.Ss Explicit file selection 106*3fe5961aSDevin TeskeAn arbitrary configuration file may be selected with 107*3fe5961aSDevin Teske.Fl f , 108*3fe5961aSDevin Teskewhich overrides 109*3fe5961aSDevin Teske.Em which 110*3fe5961aSDevin Teskefile is consulted and modified 111*3fe5961aSDevin Teske.Pq the named file alone; multi-file processing is disabled 112*3fe5961aSDevin Teskebut never 113*3fe5961aSDevin Teske.Em how : 114*3fe5961aSDevin Teskethe format is always stated explicitly by the 115*3fe5961aSDevin Teske.Ar target 116*3fe5961aSDevin Teskekeyword and is never inferred from the file. 117*3fe5961aSDevin TeskeThis composes freely, 118*3fe5961aSDevin Teskeso a 119*3fe5961aSDevin Teske.Xr loader.conf 5 Ns -formatted 120*3fe5961aSDevin Teskefile may be staged anywhere 121*3fe5961aSDevin Teske.Pq Ql sysconf loader -f /tmp/loader.conf.new ... 122*3fe5961aSDevin Teskeand, 123*3fe5961aSDevin Teskeconversely, 124*3fe5961aSDevin Teskeany format may be deliberately applied to any file. 125*3fe5961aSDevin Teske.Pp 126*3fe5961aSDevin TeskeHow each built-in format discovers or lists its backing files is 127*3fe5961aSDevin Teskeimplemented by 128*3fe5961aSDevin Teske.Xr bsdconf_format 3 . 129*3fe5961aSDevin Teske.Sh LIMITATIONS 130*3fe5961aSDevin Teske.Nm sysconf 131*3fe5961aSDevin Teskedoes not evaluate 132*3fe5961aSDevin Teske.Xr make 1 133*3fe5961aSDevin Teskeconditionals 134*3fe5961aSDevin Teske.Pq Ql .if , .elif , .else , .endif 135*3fe5961aSDevin Teskeor other makefile control flow that may appear in 136*3fe5961aSDevin Teske.Pa make.conf , 137*3fe5961aSDevin Teske.Pa src.conf , 138*3fe5961aSDevin Teskeor 139*3fe5961aSDevin Teske.Pa src-env.conf . 140*3fe5961aSDevin Teske.Pp 141*3fe5961aSDevin TeskeIt also does not consult 142*3fe5961aSDevin Teske.Pa sys.mk , 143*3fe5961aSDevin Teske.Pa local.sys.mk , 144*3fe5961aSDevin Teskeor other 145*3fe5961aSDevin Teske.Xr make 1 146*3fe5961aSDevin Teskedefaults under 147*3fe5961aSDevin Teske.Pa /usr/share/mk . 148*3fe5961aSDevin Teske.Pp 149*3fe5961aSDevin TeskeEffective values from 150*3fe5961aSDevin Teske.Nm sysconf 151*3fe5961aSDevin Tesketherefore match 152*3fe5961aSDevin Teske.Nm make Fl V 153*3fe5961aSDevin Teskefor straight-line assignment and 154*3fe5961aSDevin Teske.Ql += 155*3fe5961aSDevin Teskechains in those conf files, 156*3fe5961aSDevin Teskebut may differ when the value depends on conditionals or mk defaults. 157*3fe5961aSDevin Teske.Sh SEE ALSO 158*3fe5961aSDevin Teske.Xr bsdconf_format 3 , 159*3fe5961aSDevin Teske.Xr sysconf 8 , 160*3fe5961aSDevin Teske.Xr sysconf-generic 8 , 161*3fe5961aSDevin Teske.Xr sysconf-loader 8 , 162*3fe5961aSDevin Teske.Xr sysconf-make 8 , 163*3fe5961aSDevin Teske.Xr sysconf-rc 8 , 164*3fe5961aSDevin Teske.Xr sysconf-src 8 , 165*3fe5961aSDevin Teske.Xr sysconf-sysctl 8 166*3fe5961aSDevin Teske.Sh HISTORY 167*3fe5961aSDevin TeskeThe 168*3fe5961aSDevin Teske.Nm sysconf 169*3fe5961aSDevin Teskeutility first appeared in 170*3fe5961aSDevin Teske.Fx 16.0 . 171*3fe5961aSDevin Teske.Sh AUTHORS 172*3fe5961aSDevin Teske.An Devin Teske Aq Mt dteske@FreeBSD.org 173*3fe5961aSDevin Teske.An Faraz Vahedi Aq Mt kfv@FreeBSD.org 174