<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hi James<div><br></div><div>Probably bad wording on my behalf.  Yes it was set prior to the configure being called.</div><div>My exact entries are:</div><div><br></div><div>CFLAGS=-DSHELL='\"/bin/bash\"' ./configure --prefix=/usr --exec-prefix= --sysconfdir=/etc</div><div>make</div><div>make install</div><div><br></div><div>I have also exported the CFLAGS prior to the above and simply done configure, make and make install steps</div><div>but both yield the same results as shown previously, ie that the script errors with unexpected token</div><div>which implies that it is still running it as sh.</div><div><br></div><div>So so far it has only been the here document process working for me :(</div><div><br></div><div>cheers</div><div>grail<br><br>> Date: Tue, 14 Jun 2011 09:39:51 +0100<br>> From: james.hunt@canonical.com<br>> To: grail69@hotmail.com<br>> CC: upstart-devel@lists.ubuntu.com<br>> Subject: Re: Process substitution into loop<br>> <br>> -----BEGIN PGP SIGNED MESSAGE-----<br>> Hash: SHA1<br>> <br>> On 14/06/11 04:49, Grail Dane wrote:<br>> > Well, I can confirm that setting the interpreter to /bin/sh does not support process substitution as<br>> > I have run the following script<br>> > under both:<br>> > <br>> > while read -r DEVICE<br>> > do<br>> >     echo ip link set dev $DEVICE up<br>> > done< <(ip link | awk '/^[0-9]/ && gsub(/:/,""){print $2}')<br>> > <br>> > Under bash I get:<br>> > <br>> > ip link set dev lo up<br>> > ip link set dev eth0 up<br>> > ip link set dev sit0 up<br>> > <br>> > Under sh I get:<br>> > <br>> > line 6: syntax error near unexpected token `<'<br>> > line 6: `done< <(ip link | awk '/^[0-9]/ && gsub(/:/,""){print $2}')'<br>> > <br>> > I also have not been able to find a way to successfully implement the Cookbook option to change the<br>> > default shell.<br>> > To this end I mean that if I add the CFLAGS option prior to compiling,<br>> Hi Grail,<br>> <br>> You need to set CFLAGS prior to running *configure* (before the compile). So, you will need to do:<br>> <br>> export CFLAGS=...<br>> ./configure ...<br>> make<br>> <br>> Regards,<br>> <br>> James.<br>> <br>> > the output once running:<br>> > <br>> > start network-interfaces<br>> > <br>> > Yields the same type of error as the script above:<br>> > <br>> > /proc/self/fd/10: line 6: syntax error near unexpected token `<'<br>> > init: network-interfaces main process (27800) terminated with status 2<br>> > start: Job failed to start<br>> > <br>> > I can confirm that the here document idea does work so I am left with the fact that the CFLAGS option<br>> > was some how no interpreted :(<br>> > <br>> > Once compiled and installed is there any way to check what shell it thinks is the default?<br>> > <br>> > Cheers<br>> > grail<br>> > <br>> > ----------------------------------------------------------------------------------------------------<br>> > Date: Mon, 13 Jun 2011 18:15:20 -0700<br>> > Subject: Re: FW: Process substitution into loop<br>> > From: scott@netsplit.com<br>> > To: grail69@hotmail.com<br>> > CC: upstart-devel@lists.ubuntu.com<br>> > <br>> > Note the phrase *startup behaviour* in the paragraph - bash still supports bashisms in its scripts<br>> > when invoked as sh (after all, that's where the entire historical problem with them comes from)<br>> > <br>> > On Mon, Jun 13, 2011 at 4:56 PM, Grail Dane <grail69@hotmail.com <mailto:grail69@hotmail.com>> wrote:<br>> > <br>> >     Hi James<br>> > <br>> >     Thanks very much for the reply.  As you can probably guess the typo is in the email but not in<br>> >     the actual script.  I did further testing and as per the bash install instructions:<br>> > <br>> >     *sh*<br>> > <br>> >      <br>> > <br>> >     A symlink to the *bash* program; when invoked as *sh*, *bash* tries to mimic the startup<br>> >     behavior of historical versions of *sh* as closely as possible, while conforming to the POSIX<br>> >     standard as well<br>> > <br>> > <br>> > <br>> >     This would indicate that it is a bash builtin feature to use only POSIX compliant options.<br>> >     So from the Cookbook you may need to edit the following from the section you pointed me to:<br>> > <br>> >     If you wish to change this, you can either make /bin/sh a symbolic link to your chosen shell<br>> > <br>> >     As this does not work as expected in this case and it may be similar for other shells to.<br>> > <br>> >     I will try the workaround of adding it as the default shell in the build and let you know how it<br>> >     goes :)<br>> > <br>> >     Cheers<br>> >     grail<br>> > <br>> >     > Date: Fri, 10 Jun 2011 11:22:12 +0100<br>> >     > From: james.hunt@ubuntu.com <mailto:james.hunt@ubuntu.com><br>> > <br>> >     > To: grail69@hotmail.com <mailto:grail69@hotmail.com><br>> >     > CC: upstart-devel@lists.ubuntu.com <mailto:upstart-devel@lists.ubuntu.com><br>> >     > Subject: Re: Process substitution into loop<br>> >     ><br>> >     > Hi Grail,<br>> >     ><br>> >     > On 10/06/11 05:46, Grail Dane wrote:<br>> >     > ><br>> >     > ><br>> >     > >> Date: Thu, 9 Jun 2011 21:05:45 -0700<br>> >     > >> From: steve.langasek@ubuntu.com <mailto:steve.langasek@ubuntu.com><br>> >     > >> To: grail69@hotmail.com <mailto:grail69@hotmail.com><br>> >     > >> CC: upstart-devel@lists.ubuntu.com <mailto:upstart-devel@lists.ubuntu.com><br>> >     > >> Subject: Re: Process substitution into loop<br>> >     > >><br>> >     > >> On Fri, Jun 10, 2011 at 03:53:15AM +0000, Grail Dane wrote:<br>> >     > >> > Just wondering, as I can't find by googling, if it is at all possible to<br>> >     > >> > do a processsubstitution into a while loop within an upstart script?<br>> >     > >><br>> >     > >> > Example:<br>> >     > >> > while read -r DEVICE<br>> >     > >> > do<br>> >     > >> > ip link set dev $DEVICE up<br>> >     > >> > done< <(ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2})<br>> >     > You have an error in your script: it is missing the closing tick (see below).<br>> >     ><br>> >     > >><br>> >     > >> > When issuing the start command on the script I get:<br>> >     > >> > /proc/self/fd/10: line 6: syntax error near unexpected '<'init:<br>> >     > >> > network-interfaces main process (1367) terminated with status 2start: Job<br>> >     > >> > failed to start Would appreciated if someone would identify if i have done<br>> >     > >> > something wrong or if this not a supported feature?<br>> >     > >><br>> >     > >> The <() syntax is not part of the POSIX standard, it's a bash extension.<br>> >     > >> Upstart uses /bin/sh to interpret scripts, as is customary; chances are<br>> >     > >> you're running on a system where /bin/sh is not bash, and as a result this<br>> >     > ><br>> >     > > Actually /bin/sh is a symbolic link to bash on my system. Is there anyway to have bash as the<br>> >     > > shell used?<br>> >     ><br>> >     > script<br>> >     > /bin/bash <<EOT<br>> >     > while read -r DEVICE<br>> >     > do<br>> >     > echo "DEBUG: ip link set dev $DEVICE up" > /tmp/grail.log<br>> >     > done < <(ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2}')<br>> >     > EOT<br>> >     > end script<br>> >     ><br>> >     > Also, just for you :)...<br>> >     ><br>> >     > http://upstart.ubuntu.com/cookbook/#changing-the-default-shell<br>> >     ><br>> >     > Regards,<br>> >     ><br>> >     > James.<br>> >     ><br>> >     > ><br>> >     > >> syntax is not supported.<br>> >     > >><br>> >     > >> A supported syntax would be:<br>> >     > >><br>> >     > >> ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2}' |<br>> >     > >> while read -r DEVICE<br>> >     > >> do<br>> >     > >> ip link set dev $DEVICE up<br>> >     > >> done<br>> >     > >><br>> >     > >> --<br>> >     > >> Steve Langasek Give me a lever long enough and a Free OS<br>> >     > >> Debian Developer to set it on, and I can move the world.<br>> >     > >> Ubuntu Developer http://www.debian.org/<br>> >     > >> slangasek@ubuntu.com <mailto:slangasek@ubuntu.com> vorlon@debian.org <mailto:vorlon@debian.org><br>> >     > ><br>> >     ><br>> > <br>> >     --<br>> >     upstart-devel mailing list<br>> >     upstart-devel@lists.ubuntu.com <mailto:upstart-devel@lists.ubuntu.com><br>> >     Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel<br>> > <br>> > <br>> <br>> <br>> - -- <br>> Cheers,<br>> <br>> James.<br>> - --<br>> James Hunt<br>> ____________________________________<br>> Ubuntu Foundations Team, Canonical.<br>> -----BEGIN PGP SIGNATURE-----<br>> Version: GnuPG v1.4.11 (GNU/Linux)<br>> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/<br>> <br>> iEYEARECAAYFAk33HlMACgkQYBWEaHcQG9ctAwCfaJrG/Vyf4robYFV5lCwhzGwq<br>> Sr0AnAwGL8UWMT9CC++/Zzh4ilFHCKmc<br>> =kNrb<br>> -----END PGP SIGNATURE-----<br></div>                                          </body>
</html>