These patches improve a few inconsistencies in how Eshell conditionals work, especially when using Lisp forms inside of the command-form of "if". For example, before this patch, the following command outputs nothing at all: if (zerop 0) (identity \"yes\") (identity \"no\") With the patches, it now correctly outputs "yes". I also added the ability to use the "else" keyword so that you can chain together if/else blocks like so: if {[ -f file.txt ]} { echo found file } else if {[ -f alternate.txt ]} { echo found alternate } else { echo not found! }