¿Shell de UNIX escrito en un lenguaje razonable?

¿Alguna vez alguien ha oído hablar de un shell de UNIX escrito en un lenguaje razonable, como Python?

  • Eshell es una shell tipo Bash en Emacs Lisp.
  • IPython se puede usar como shell del sistema , aunque la syntax es un poco rara (es compatible con todas las construcciones básicas de Python más sh).
  • fish tiene un núcleo escrito en C, pero gran parte de su funcionalidad se implementa en sí misma. A diferencia de muchos shells raros, se puede usar como shell de inicio de sesión.
  • Hotwire merece otra mención. Su diseño básico parece ser “PowerShell en Python”, pero también hace algunas cosas inteligentes con la interfaz de usuario. El último lanzamiento fue en 2008.
  • Zoidberg está escrito en Perl y usa la syntax de Perl. Un proyecto bonito, lástima que parece haberse estancado.
  • Sería difícil usar Scsh como shell de inicio de sesión (un comando de ejemplo de los documentos: (run/strings (find "." -name *.c -print)) ), pero parece un buen “Perl in Scheme”. ”

iPython (Python) y Rush (Ruby) son shells diseñados para lenguajes más avanzados. También está Hotwire, que es una especie de extraño emulador de shell / terminal integrado.

De todas las apariencias, Python es una concha. Se ejecuta con #! y se puede ejecutar de forma interactiva. Entre los paquetes os y shutil tiene todas las características de las carcasas estándar de Unix.

Ya que puedes hacer cualquier cosa en Python con scripts simples y poderosos, no necesitas pasar mucho tiempo jugando con los otros shells.

Bueno, hay emacs, que posiblemente sea un shell escrito en lisp 🙂

Hablando en serio, ¿estás buscando una reimplementación de un diseño de shell existente en un lenguaje diferente como Python? ¿O está buscando una nueva implementación de un lenguaje shell que se parece a su idioma de elección?

Tclsh es bastante agradable (suponiendo que te guste Tcl, por supuesto).

Intente la erupción . Es un lenguaje de shell escrito en raqueta. Tiene una buena syntax interactiva. Puede incrustar Rash dentro de cualquier archivo normal de Racket, así como incrustar Racket normal dentro de Rash. Es extensible y puede definir nuevos operadores de ductos. Todavía es de calidad alfa en este momento, pero es bastante genial. Revelación completa: lo escribí.