I know you have accepted an answer, however there is some amgiguity.
When referring to a scripting engine, we typically mean a small embedded language that sits within a template and generates textual output or documents. For example Freemarker and Velocity are often referred to as scripting engines. Erb would sit here too, but oddly is not referred to as a scripting engine that often.
A scripting language generally needs no compile step, therefore can be run more simply as a, or, from a shell script. This includes things like awk, perl, tcl, python, ruby and so on. These languages typically need to be terse and type safety is often optional. Windows supports a number of languages in it's scripting host facilities. This exposes scripting languages to various components within Windows.
So then fully compiled languages such as Java may well run as bytecode and could be considered as interpreted, however the point is that there is an explicit compile step, there is no interpreter (with the Sun JRE anyway) that provides a runtime executable environment for java code.
Other languages such as VBA are embedded, many of the languages above can be embedded. Embedded languages could be referred too as a scripting engine for the host application.
In my mind a scripting engine interprets programmatic instructions and in turn instructs a larger host application or system. The instructions are executed immediately without concern for any remaining instructions.
Many Lisps have no distinction between data and code, possibly compiling dynamically at runtime. The interpret, compile and execute steps are available to the Lisp programmer to be manipulated as programmers manipulate data in other languages.