This directory contain scripts that allow easy access (classpath in particular)
to the ZooKeeper server and command line client.

Files ending in .sh are unix and cygwin compatible

Files ending in .cmd are msdos/windows compatible
