fish-shell/share/functions/eval.fish
2013-01-20 15:55:10 +01:00

28 lines
651 B
Fish

function eval -S -d "Evaluate parameters as a command"
# If we are in an interactive shell, eval should enable full
# job control since it should behave like the real code was
# executed. If we don't do this, commands that expect to be
# used interactively, like less, wont work using eval.
set -l mode
if status --is-interactive-job-control
set mode interactive
else
if status --is-full-job-control
set mode full
else
set mode none
end
end
if status --is-interactive
status --job-control full
end
echo "begin; $argv ;end eval2_inner <&3 3<&-" | . 3<&0
set -l res $status
status --job-control $mode
return $res
end