Feature #3426

exec doesn't allow command lines which begin with an env variable assignment

Added by caleb clausen over 5 years ago. Updated over 3 years ago.

Assignee:Yusuke Endoh


The documentation for exec states: "If single string is given as the command, it is taken as a command line that is subject to shell expansion before being executed." However, command lines that begin with environment variable assignments do not seem to work. For example:

$ install/bin/ruby -e 'exec "FOO=1 echo bar"'
-e:1:in exec': No such file or directory - FOO=1 echo bar (Errno::ENOENT)
from -e:1:in

Other examples of shellish syntax (not a filename) for the first word do work.

This same problem seems to also afflict all the other constructs for running an external command: system, backticks, IO.popen, spawn. I'm reporting against 1.9.3, but all previous versions of ruby (s far back as 1.8.6) that I've tried have the problem as well.

Related issues

Related to Ruby trunk - Feature #2715: Optimization to avoid spawning shell in Kernel#system call should check for failure conditions Feedback 02/06/2010


#1 Updated by Yusuke Endoh over 5 years ago

  • Target version set to 2.0.0

See #3321. At least, this won't be fixed in 1.9.2.

But many people seem to hope this spec to be changed and I can
understand them. Let's discuss towards 1.9.x.
I move this ticket to 1.9.x feature tracker.

Yusuke Endoh mame@tsg.ne.jp

#2 Updated by Hiroshi Nakamura over 3 years ago

  • Description updated (diff)
  • Status changed from Open to Rejected
  • Assignee set to Yusuke Endoh

Mark as Rejected since Endoh-san said it's duplicated of #3321, and #3321 is rejected.

Also available in: Atom PDF