On Sat, 6 Apr 2019, Dmitry Bogatov wrote:
> [2019-04-05 11:11] Cristian Ionescu-Idbohrn 
> <[email protected]>
> > Thing is neither the `:' nor the `true' commands are needed.  To 
> > truncate a file it's sufficient to redirect _nothing_ to that file.
> >
> >      $ dash -c '>/tmp/dir/; echo $?; echo hello world;'         
> >     dash: 1: cannot create /tmp/dir/: Is a directory
> >     2
> >     hello world
> 
> Nice to know. Is this behaviour mandated by posix?

Not in so many words, but it doesn't say there _must_ be input to 
redirect to stdout or stderr.

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07

"The overall format used for redirection is:

[n]redir-op word"

(nothing about input).  dash, bash, busybox ash work fine, but not zsh 
(it's waiting for input).

I've been using these redirections for many, many years without any 
ill effects:

        >file   # truncate or create
        >>file  # `touch' or create

> > The real problem is that a failing redirection is _not_ error handled 
> > (in the /etc/init.d/bootmisc.sh case).
> 
> Sorry, failed to parse. You seems to tell, that there is another problem
> in 'bootmisc.sh', but I do not understand, which one.

The redirection in /etc/init.d/bootmisc.sh on line 29 is _not_ error 
handled.  Writing to a file can fail (for various reasons).

OTOH, the redirection in /lib/init/bootclean.sh on line 22 _is_ error 
handled.


Cheers,

-- 
Cristian

Reply via email to