add interruptible greenlet support in shell