如何实现Shell