livecdfs-update.sh: Escape ampersands in STARTX sed expression
authorW. Trevor King <wking@tremily.us>
Sun, 3 Mar 2013 16:53:18 +0000 (11:53 -0500)
committerBrian Dolbec <dolsen@gentoo.org>
Wed, 29 May 2013 03:39:57 +0000 (20:39 -0700)
From sed(1):

  s/regexp/replacement/
    Attempt to match regexp against the pattern space.  If successful,
    replace that portion matched with replacement.  The replacement
    may contain the special character & to refer to that portion of
    the pattern space which matched, and the special escapes \1
    through \9 to refer to the corresponding matching sub-expressions
    in the regexp.

This means that the old expression (with unescaped ampersands) lead
to:

  source /etc/profile ##STARTX##STARTX su - ${first_user} -c startx

when we want:

  source /etc/profile && su - ${first_user} -c startx

with ${first_user} expanded in both cases.

Reviewed-by: Matt Turner <mattst88@gmail.com>
targets/support/livecdfs-update.sh

index 951e4ad7bd41b69d753d7d55d16d8a4da5c7e091..0928f173b028fd17119ee83a3c8bf9659ca537af 100755 (executable)
@@ -389,7 +389,7 @@ esac
 if [ -e /etc/startx ]
 then
        sed -i \
-               "s:##STARTX:source /etc/profile && su - ${first_user} -c startx:" \
+               "s:##STARTX:source /etc/profile \&\& su - ${first_user} -c startx:" \
                /root/.bashrc
 fi