SYSRC(8)
π SYSRC(8) β the safe way to edit your rc files, bestie
okay so picture this: it's the System Manager's Manual, it's SYSRC(8), and it's literally here to help you not break your box. Think of it as the group-chat friend who says "bestie no, let me edit the config for you" β sysrc grabs rc.conf(5) variables from your system rc files and lets processes with the right privileges change values in a safe and effective way. no cap. π
β¨ SYNOPSIS β¨
sysrc [-cdDeEFhinNqvx] [-s name] [-f file] [-j jail | -R dir]
name[[+|-]=value] ...
sysrc [-cdDeEFhinNqvx] [-s name] [-f file] [-j jail | -R dir] -a | -A
sysrc [-E] [-s name] [-f file] -l
sysrc [-eEqv] -L [name ...]
πΈ DESCRIPTION πΈ
The sysrc utility retrieves rc.conf(5) variables from the collection of system rc files and allows processes with appropriate privilege to change values in a safe and effective manner. that's the whole vibe. π¦
The following options are available:
-aβ Dump a list of all non-default configuration variables.-Aβ Dump a list of all configuration variables (incl. defaults). yes, even the default ones, icon behaviour.-cβ Check only. For querying, return success if all requested variables are set (even if NULL), otherwise return error status. For assignments, return success if no changes are required, otherwise failure. If verbose (see-v) prints a message stating whether variables are set and/or changes are required. it's giving "are we good or not" energy π-dβ Print a description of the given variable.-Dβ Show default value(s) only (this is the same as settingRC_CONFSto NULL or passing-fwith a NULL file-argument).-eβ Print query results assh(1)compatible syntax (for example,var=value). Ignored if either-nor-Fis specified. so quotable π«Ά-Eβ When given-lor-Lto list configuration files, only list those that exist. When changing a setting, prefer to modify existing files. exist only, periodt.-ffile β Operate on the specified file(s) instead of the files obtained by reading therc_conf_filesentry in theRC_DEFAULTSfile. This option can be specified multiple times for additional files. stack 'em up π-Fβ Show only the lastrc.conf(5)file each directive is in.-hβ Print a short usage message tostderrand exit.--helpβ Print a full usage statement tostderrand exit. the deluxe version, obviously β¨-iβ Ignore unknown variables. live your truth, skip the mystery names.-jjail β The jid or name of the jail to operate within (overrides-R dir; requiresjexec(8)).-lβ List configuration files used at startup onstdoutand exit.-Lβ List all configuration files includingrc.conf.dentries onstdoutand exit. Can be combined with-vor-eto show service names.sysrcexits with success if all named services are installed, failure otherwise.-nβ Show only variable values, not their names. names? never heard of her.-Nβ Show only variable names, not their values.-qβ Quiet. Disable verbose and hide certain errors. When combined with-Land one or more name arguments, provide only exit status and no output. the strong silent type π-Rdir β Operate within the root directory dir rather than/.-sname β If anrc.dscript of name exists (in/etc/rc.dorlocal_startupdirectories), process itsrc.conf.dentries as potential overrides torc_conf_files. Seerc.subr(8)for additional information onrc.conf.d. Can be combined with-lto list configuration files used by service at startup.-vβ Verbose. Print the pathname of the specificrc.conf(5)file where the directive was found. receipts! π§Ύ--versionβ Print version information tostdoutand exit.-xβ Remove variable(s) from specified file(s). bye bye π
This utility has a similar syntax to sysctl(8). It shares the -e and -n options (detailed above) and also has the same name[=value] syntax for making queries/assignments. In addition (but unlike sysctl(8)), name+=value is supported for adding items to values (see APPENDING VALUES) and name-=value is supported for removing items from values (see SUBTRACTING VALUES). we love a glow-up that keeps the family resemblance π
However, while sysctl(8) serves to query/modify MIBs in the entrant kernel, sysrc instead works on values in the system rc.conf(5) configuration files. different lane, same slay.
The list of system configuration files is configured in the file /etc/defaults/rc.conf within the variable rc_conf_files, which by-default contains a space-separated list of pathnames. On all FreeBSD systems, this defaults to the value /etc/rc.conf /etc/rc.conf.local. Each pathname is sourced in-order upon startup. It is in the same fashion that sysrc sources the configuration files before returning the value of the given variable.
When supplied a variable name, sysrc will return the value of the variable. If the variable does not appear in any of the configured rc_conf_files, an error is printed and error status is returned. rude but fair π
When changing values of a given variable, it does not matter if the variable appears in any of the rc_conf_files or not. If the variable does not appear in any of the files, it is appended to the end of the first pathname in the rc_conf_files variable. Otherwise, sysrc will replace only the last-occurrence in the last-file found to contain the variable. This gets the value to take effect next boot without heavily modifying these integral files (yet taking care not to allow the file to grow unwieldy should sysrc be called repeatedly). it's giving considerate queen behaviour π
π APPENDING VALUES π
When using the key+=value syntax to add items to existing values, the first character of the value is taken as the delimiter separating items (usually " " or ","). For example, in the following statement:
sysrc cloned_interfaces+=" gif0"
the first character is a space, informing sysrc that existing values are to be considered separated by whitespace. If gif0 is not found in the existing value for cloned_interfaces, it is added (with delimiter only if existing value is non-NULL).
For convenience, if the first character is alpha-numeric (letters A-Z, a-z, or numbers 0-9), dot (.), or slash (/), sysrc uses the default setting of whitespace as separator. For example, the above and below statements are equivalent since gif0 starts with an alpha-numeric character (the letter g):
sysrc cloned_interfaces+=gif0
Take the following sequence for example:
sysrc cloned_interfaces= # start with NULL
sysrc cloned_interfaces+=gif0
# NULL -> `gif0' (NB: no preceding delimiter)
sysrc cloned_interfaces+=gif0 # no change
sysrc cloned_interfaces+="tun0 gif0"
# `gif0' -> `gif0 tun0' (NB: no duplication)
sysrc prevents the same value from being added if already there. no duplicates in this house, we don't do that π
π¦ SUBTRACTING VALUES π¦
When using the key-=value syntax to remove items from existing values, the first character of the value is taken as the delimiter separating items (usually " " or ","). For example, in the following statement:
cloned_interfaces-=" gif0"
the first character is a space, informing sysrc that existing values are to be considered separated by whitespace. If gif0 is found in the existing value for cloned_interfaces, it is removed (extra delimiters removed).
For convenience, if the first character is alpha-numeric (letters A-Z, a-z, or numbers 0-9), dot (.), or slash (/), sysrc uses the default setting of whitespace as separator. For example, the above and below statements are equivalent since gif0 starts with an alpha-numeric character (the letter g):
sysrc cloned_interfaces-=gif0
Take the following sequence for example:
sysrc foo="bar baz" # start
sysrc foo-=bar # `bar baz' -> `baz'
sysrc foo-=baz # `baz' -> NULL
sysrc removes all occurrences of all items provided and collapses extra delimiters between items. clean sweep, honestly iconic π§Ήβ¨
π ENVIRONMENT π
The following environment variables are referenced by sysrc:
RC_CONFSβ Override defaultrc_conf_files(even if set to NULL). even NULL, she said what she said.RC_DEFAULTSβ Location of/etc/defaults/rc.conffile.
π DEPENDENCIES π
The following standard commands are required by sysrc:
awk(1), cat(1), chmod(1), env(1), grep(1), mktemp(1), mv(1), rm(1), sh(1), stat(1), tail(1), chown(8), chroot(8), jls(8), and jexec(8).
the whole squad. no solo missions here π«Ά
β FILES β
/etc/defaults/rc.conf
/etc/rc.conf
/etc/rc.conf.local
/etc/rc.conf.d/name
/etc/rc.conf.d/name/*
/usr/local/etc/rc.conf.d/name
/usr/local/etc/rc.conf.d/name/*
π EXAMPLES π
Working with rc.conf files
Ask the value of sshd_enable, usually YES or NO:
sysrc sshd_enable
Return the IP address of default router (if configured):
sysrc defaultrouter
Working with other files
Return the value of the MAILTO setting, if configured, from crontab(5):
sysrc -f /etc/crontab MAILTO
Append gif0 to $cloned_interfaces (see APPENDING VALUES):
sysrc cloned_interfaces+=gif0
Remove gif0 from $cloned_interfaces (see SUBTRACTING VALUES):
sysrc cloned_interfaces-=gif0
Inline shell parameter expansion
Return $hostname up to, but not including, first .:
sysrc 'hostname%%.*'
Return first word of $network_interfaces:
sysrc 'network_interfaces%%[$IFS]*'
Return last word of $ntpdate_flags (time server address):
sysrc 'ntpdate_flags##*[$IFS]'
Return $usbd_flags or default if unset or NULL:
sysrc usbd_flags-"default"
Return alternate if $cloned_interfaces is set:
sysrc cloned_interfaces+"alternate"
π SEE ALSO π
rc.conf(5), jail(8), jexec(8), jls(8), rc(8), rc.subr(8), sysctl(8)
go read the whole cinematic universe bestie π
π HISTORY π
A sysrc utility first appeared in FreeBSD 9.2. an elder, a legend.
π₯ AUTHORS π₯
Devin Teske <dteske@FreeBSD.org> β the main character, truly.
πΈ THANKS TO πΈ
Brandon Gooch, Enji Cooper, Julian Elischer, Pawel Jakub Dawidek, Cyrille Lefevre, Ross West, Stefan Esser, Marco Steinbach, Jilles Tjoelker, Allan Jude, and Lars Engels for suggestions, help, and testing. the whole support system, we stan ππ
and that's the page babes β this Debian edition of the manual is dated April 3, 2022, and you can find the source/version line right at the bottom of the og. now go forth and sysrc responsibly π§ββοΈπ
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- π the page's license: BSD-2-Clause
- Copyright (c) 2011-2016 Devin Teske
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms