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 status --job-control $mode end