Have you considered an extremely simple language syntax, like FORTH or REBOL? These are extremely easy languages to understand, and the grammars are very simple to implement.
In these languages, functionality is described in terms of words, which are themselves defined in terms of simpler words, making it incredibly simple to construct powerful abstractions, without the complexity of understanding classes, types, or even functions.
FORTH is so simple, that a full compiler can be written in a few hundred lines of code. A revision of Crenshaw's book demonstrates this. (Sample implementations are commonplace.) REBOL is similarly simple, and while it has only recently been open-sourced, and hasn't yet been retooled for embedding, the core language parser weighs in at about 1,000 lines of code. From the other side, both are easy to learn and grasp, since there are only a few concepts to understand.
Both languages are suitable for implementation as a shell language, as the host environment can define whatever words are needed for common operations. From there, users can do literally anything they can imagine.