backticks in rc.conf

Jerry McAllister jerrymc at msu.edu
Tue Jul 21 16:10:01 UTC 2009


On Tue, Jul 21, 2009 at 12:24:09PM +0100, chris scott wrote:

> 2009/7/21 Giorgos Keramidas <keramida at ceid.upatras.gr>
> 
> > On Tue, 21 Jul 2009 11:29:20 +0200, Polytropon <freebsd at edvax.de> wrote:
> > > On Tue, 21 Jul 2009 09:46:47 +0100, chris scott <kraduk at googlemail.com>
> > wrote:
> > >> can i use backticks in rc.conf?
> > >
> > > Basically, yes. The /etc/rc.conf file is run through sh, it is
> > > a shell script that assigns values to variables, but can (ab)use
> > > it to execute programs.
> > >
> > >> rsyncd_flags="--config=/etc/rsyncd.conf --address="` ifconfig bce1 |
> > grep
> > >> inet | awk '{print $2}'`
> > >>
> > >> it works fine from the shell, however on reboot the address section
> > doesnt
> > >> expand, or rather it goes blank
> > >
> > > You should use the full pathnames leading to ifconfig, grep, and awk.
> > > Make sure they are accessible when rc.conf is "executed".
> >
> > There's a catch here that may go unnoticed for a while...
> >
> > rc.conf may be sourced by /etc/rc *long* before filesystems are
> > mounted.  As a result grep or awk may be not be available and stop
> > rc.conf from loading.
> >
> > It's probably a good idea to:
> >
> >  * Add a special rsyncd_bind_address variable that is handled in
> >    `/usr/local/etc/rc.d/rsyncd' itself
> >
> >  * Permit "AUTO" as the value of ${rsyncd_bind_address} and do the
> >    smart thing there.
> >
> >  * Edit `/usr/local/etc/rc.d/rsyncd' to add a dependency for the
> >    "NETWORKING" and "FILESYSTEMS" special names, so that `rc.d/rsyncd'
> >    runs only after networking is up and /usr or other late-mounted
> >    filesystems have finished loading.
> >
> > thanks for the advice but I've found a solution (see below).
> 
> My systems dont generally have a /usr slice as i like to keep all the os in
> one place, having a slice for /usr/local. /var, /home, and /tmp so the late
> fs isnt an issue for me.

Probably you mean a /usr partition - which is a division of a slice.
Generally, since there are only 4 slices available, they are not
used to divide the disk for mountable file systems, but rather are
used for major divisions such as if you have more than one OS sharing
the disk.  The the FreeBSD slice can be further divided into partitions.

Note, that confusion occurs here often as MS uses the terminology differently.
The primary divisions that FreeBSD calls slices, they call primary partitions.

////jerry     
> 
> My latest test builds are pure zfs so wont be an issue there either 8)
> 
> a=`echo $ifconfig_bge0 | /usr/bin/awk '{ for ( i=1 ; i <= NF; i++) { if ( $i
> ~ /[iI][nN][eE][tT]/ ) { sub(/\/.*/,"", $(i+1)); print $(i+1) } } }'`
> rsyncd_flags="--config=/etc/rsyncd.conf --address=$a"
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"


More information about the freebsd-questions mailing list