-
Notifications
You must be signed in to change notification settings - Fork 27
Description
es has a hook function called %run
for fork/exec-ing a binary with the given arguments as its argv
. This is cool, but the function isn't actually used by es itself without some hackery to %pathsearch
fn %pathsearch name {
result %run <={access -n $prog -1e -xf $path} $prog
}
and then potentially doing something to deal with the fact that %whatis bin
now returns the ugly
%run /path/to/bin bin
and then feeling sad about the fact that if a user passes in an absolute path, %run
just won't be called.
It seems more es-ish to just replace the forkexec()
calls in eval()
with calls to %run
(or maybe fall back to $&run
, if %run
isn't set). Outside of $&run
, eval()
is the only place where forkexec()
gets called, so having eval()
go through $&run
would make it the only way binaries are invoked.
A concrete possibility this enables is the setting of a bash- or zsh-like $_
for any invoked binary (from man bash
, this: "the full pathname used to invoke each command executed and placed in the environment exported to that command"), like this:
let (r = $fn-%run)
fn %run cmd args {
local (_ = $cmd) $r $cmd $args
}