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)
committerMatt Turner <mattst88@gmail.com>
Sat, 9 Mar 2013 02:47:22 +0000 (18:47 -0800)
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 77d694ef0c0562dfa29e8087fda2840cf631cf2e..fda3e362a4dc3ba49c781ad461bb5e2df34a134d 100644 (file)
@@ -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