bin/173642: ``here-document'' does not works in FreeBSD 9 /bin/sh

Jilles Tjoelker jilles at stack.nl
Sat Nov 17 23:00:01 UTC 2012


The following reply was made to PR bin/173642; it has been noted by GNATS.

From: Jilles Tjoelker <jilles at stack.nl>
To: bug-followup at FreeBSD.org, Aleksandr A Babaylov <"."@babolo.ru>
Cc:  
Subject: bin/173642: ``here-document'' does not works in FreeBSD 9 /bin/sh
Date: Sat, 17 Nov 2012 23:51:54 +0100

 In PR bin/173642:
 > As of FreeBSD 9.0, the below script fails (with fdescfs mounted):
 
 > 5<<EOF
 > foo
 > EOF
 > cat /dev/fd/5
 
 This script took advantage of a bug in sh that has been fixed. A
 redirection should only apply for the duration of the command it is
 attached to, except if that command is the builtin "exec". This includes
 commands consisting solely of redirections (here-documents or other
 kinds). Before 9.0, sh did not handle this properly if the fd was not
 open before a redirection attached to some kinds of commands.
 
 Note that the script will not work even with the older sh if fd 5 is
 already open, for example
   sh your-script 5</dev/null
 
 The fix is to replace the line
   5<<EOF
 with
   exec 5<<EOF
 This will also work with the older sh, fixing the problems if fd 5 is
 already open.
 
 I do not plan to merge the bugfix in sh to stable/8.
 
 -- 
 Jilles Tjoelker


More information about the freebsd-bugs mailing list