参考 alien 中的 shell.js