[net.bugs.4bsd] Csh aliases and process control

gilbert@hwcs.UUCP (Gilbert Cockton) (11/08/84)

	In my .cshrc I had several three command aliases of the
	form  alias foo 'x ; y ; z'.

	If I stopped process y, process z was never initiated, a 
	different form of the sequence bug noted in csh.1,
	where stopping y causes z to be immediately executed
	(The manual example was for terminal input sequences).

	Is this bug/feature generally well known ?

	Bracketting the alias has restored correct behaviour on
	process suspension.
-- 
 [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
  ||									  ||
  ||    Gilbert Cockton, Department of Computer Science,	          ||
  ||    Heriot-Watt University, Edinburgh, Scotland.	     		  ||
  ||							    		  ||
  ||    	...!ukc!{edcaad,kcl-cs}!hwcs!gilbert		          ||
  ||							    		  ||
 [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]

ron@brl-tgr.ARPA (Ron Natalie <ron>) (11/12/84)

> 
> 
> 	In my .cshrc I had several three command aliases of the
> 	form  alias foo 'x ; y ; z'.
> 
> 	If I stopped process y, process z was never initiated, a 
> 	different form of the sequence bug noted in csh.1,
> 	where stopping y causes z to be immediately executed
> 	(The manual example was for terminal input sequences).
> 
This behaviour is understandable.  Alias generates the command
x; y; z as if you typed it.  You will note the same behavior if
you type that and stop y.  The stop signal causes the shell to
handle the input line the same as if you had typed an interrupt
at that point.  Brakceting the command causes the bracketed command
to fork and be stopped as a whole, and then restartable as a whole.

Yes this is contrary to the manual.  My Bourne shell with job control
behaves the same way.  It seems to be the only sane way of handling
things.  Trying to restart lists of functions or loops without the
intervening fork of another copy of the shell is too difficult to
consider.

-Ron