Eval built-in
The eval built-in evaluates the arguments as shell commands.
Synopsis
eval [command…]
Description
This built-in parses and executes the argument as a shell script in the current shell environment.
Options
None.
Operands
The operand is a command string to be evaluated. If more than one operand is given, they are concatenated with spaces between them to form a single command string.
Errors
During parsing and execution, any syntax error or runtime error may occur.
Exit status
The exit status of the eval built-in is the exit status of the last
command executed in the command string.
If there is no command in the string, the exit status is zero.
In case of a syntax error, the exit status is 2.
Examples
See Evaluating command strings.
Security considerations
The eval built-in can be dangerous if used with untrusted input, as it can execute arbitrary commands. It is recommended to avoid using eval with user input or to sanitize the input before passing it to eval.
Compatibility
The eval built-in is specified by POSIX.1-2024.
In some shells, the eval built-in lacks support for the -- separator, treating it as an operand.
Previous versions of yash supported the non-standard -i option, but this is not yet supported in yash-rs.