trap 0 in /bin/sh

Bill Stewart 908-949-0705 erebus.att.com!wcs wcs at cbnewsh.att.com
Mon Apr 1 12:20:42 AEST 1991


In article <893 at mecky.UUCP> walter at mecky.UUCP (Walter Mecky) writes:
] In article <1991Mar27.153352.4421 at robobar.co.uk> ronald at robobar.co.uk (Ronald S H Khoo) writes:
] < Can someone explain why these two commands give different output ?
] < Is there some subtlety about the "trap" command that I don't understand ?
] < 	$ ( trap 'echo foo' 0 ; true )
] < 	$ ( trap 'echo foo' 0 ; : )
] < 	foo
] Looks like a bug in sh, ksh executes echo with both commands.
Actually, true is also a ksh builtin, but ksh DOES do the right thing with
	$ ( trap ' echo foo' 0 ; ls>/dev/null )
	foo
] I suppose, the subshell for the commands in ( ... ) looks to 
] the last command bevor ) and, if it's not a builtin, does only exec(2),
] instead of the usual fork(2)/exec(2). So sh cannot execute the trap commands.
	Sounds believable, and it's interesting to see another
	difference between sh and ksh.  Other than the efficiency gain
	by skipping the fork(), is there any useful program you
	could write in /bin/sh that would break by moving to ksh,
	which depends on the presence of this bug?  Or is it pure bug?
-- 
# Bill Stewart 908-949-0705 erebus.att.com!wcs AT&T Bell Labs 4M-312 Holmdel NJ
(Little Girl:) When I grow up, I want to be a nurse      } From this week's UFT
(Little Boy:)  When I grow up, I want to be an engineer  } radio commercial
.... guess the Political Correctness Police don't run NYC's teachers' union yet



More information about the Comp.unix.shell mailing list