[arch-general] Start a daemon, show a syntax error

郑文辉(Techlive Zheng) techlivezheng at gmail.com
Fri Feb 17 09:32:58 EST 2012


As I mentioned before, same problem in my /etc/bash_completion.d/git
happend some tiem ago, now it is gone, because git bash_completion
does not contain "done < <(*)" syntax any more.

Also, as the first mail submiter and I are both Chinese. Is there any
chance that may be the locale caused this? I set locale to
"en_US.UTF-8" in the rc.conf while using "zh_CN.UFT-8" under X.

2012/2/17 郑文辉(Techlive Zheng) <techlivezheng at gmail.com>:
> 2012/2/17 Lukas Fleischer <archlinux at cryptocrack.de>:
>> On Fri, Feb 17, 2012 at 05:58:31PM +0800, 郑文辉(Techlive Zheng) wrote:
>>> 2012/2/17 Lukas Fleischer <archlinux at cryptocrack.de>:
>>> > On Fri, Feb 17, 2012 at 05:32:33PM +0800, 大熊 wrote:
>>> >> 在 2012年2月17日 下午2:57,Lukas Fleischer <archlinux at cryptocrack.de>写道:
>>> >>
>>> >> > On Fri, Feb 17, 2012 at 12:35:03PM +0800, 郑文辉(Techlive Zheng) wrote:
>>> >> > > 2012/2/17 大熊 <bearsprite at gmail.com>:
>>> >> > > > No matter I manual start any a daemon, I always see a error shown on
>>> >> > > > console:
>>> >> > > >
>>> >> > > > /etc/rc.d/functions: line 506: syntax error near unexpected token `('
>>> >> > > > /etc/rc.d/functions: line 506: `        done < <(findmnt -mrunRo
>>> >> > > > TARGET,FSTYPE,OPTIONS /)
>>> >> > > >
>>> >> > > > But it seem that the daemon can run correctly, so should I need to fix
>>> >> > it
>>> >> > > > and how to fix it ?
>>> >> > >
>>> >> > > I don't know why this bug is always occur again and again.
>>> >> > >
>>> >> > > The fix is to edit /etc/rc.d/functions, change line 506 to the following:
>>> >> > >
>>> >> > > done < $(findmnt -mrunRo TARGET,FSTYPE,OPTIONS /)
>>> >> >
>>> >> > Nope. Don't do that. Post the output of `bash --help | head -1`, `which
>>> >> > bash` and `pacman -Qo /bin/bash`.
>>> >> >
>>> >>
>>> >> ➜  ~  bash --help|head -1
>>> >> GNU bash, version 4.2.20(2)-release-(i686-pc-linux-gnu)
>>> >> ➜  ~  which bash
>>> >> /bin/bash
>>> >> ➜  ~  pacman -Qo /bin/bash
>>> >> /bin/bash is owned by bash 4.2.020-1
>>> >> ➜  ~
>>> >
>>> > Weird... Did you enforce POSIX-compatibility somewhere? How do you start
>>> > the daemons? Do you use something broken like `sh rc.d start $foo` or
>>> > `sh /etc/rc.d/$foo start`?
>>> >
>>> > If you don't, the outputs of `pacman -Qo /etc/rc.d/functions`, `head -1
>>> > /etc/rc.d/functions` and `head -1 /usr/sbin/rc.d` might be helpful as
>>> > well.
>>>
>>> I have the same problem.It is all happened at codes like "done <
>>> <(some stuff)",but after I changed it to "done < $(some stuff)", all
>>> going well.I don't know bash has such a syntax usage?
>>
>> "done < $(foo)" isn't the same thing as "done < <(foo)". You break
>> scripts by changing that (see "Command Substitution" vs. "Process
>> Substitution" in the bash(1) man page). Sounds like process substitution
>> support is broken for you which might have occurred because
>>
>> a) You're not using bash (e.g. running rc.d(8) in sh(1)/$whatever).
> I am currently using bash, but I am not sure which shell is using
> while booting process.
>> b) You built bash manually and disabled process substitution support.
> I am using the bash from the official repo.
>> c) You're running bash in POSIX mode.
> I am not sure about this,how to check it out?
>> d) Something else happened.


More information about the arch-general mailing list