Xonsh: shell multiplataforma, movido a Python, com olhar para Unix

Um shell movido a Python chamado Xonsh está gerando debate sobre se shells modernos e ricos em recursos podem realisticamente substituir opções onipresentes como Bash e Zsh. Defensores elogiam sua capacidade de misturar Python com comandos tradicionais de shell, escrever scripts mais fáceis de manter e funcionar em múltiplas plataformas (especialmente no Windows), enquanto críticos citam instabilidade, incompatibilidades com ferramentas comuns (como `fzf` e apps ncurses) e o gerenciamento de dependências do Python como desvantagens sérias. A conversa se amplia para uma questão mais geral: os desenvolvedores deveriam priorizar aprender shells mais novos como Xonsh, Fish e Nushell para o trabalho diário, ou permanecer nas ferramentas POSIX que vêm por padrão na maioria dos sistemas.

O que é o Xonsh e para quem ele é voltado

  • Shell movido a Python que busca combinar Python e a semântica tradicional de shell.
  • Comercializado como “Unix‑gazing” / “Bash‑wards compatible”: em geral, próximo da UX do Bash, mas não compatível com POSIX e nem 100% compatível com Bash.
  • Visto como especialmente atraente para usuários Unix no Windows que querem uma experiência parecida com Bash.

Vantagens e experiências positivas

  • Usuários relatam anos de uso diário no Linux e no Windows e dizem “adorar”, apesar de certa lentidão em relação a shells baseados em C.
  • Forte apelo para quem não gosta de escrever scripts em Bash; os scripts do xonsh são descritos como mais claros e com maior chance de serem mantidos a longo prazo.
  • Misturar comandos de shell e Python no mesmo lugar é um grande atrativo (por exemplo, matemática rápida, lógica Python em pipelines, arquivos rc mais limpos).
  • Alguns acham que ele é configurável o suficiente para parecer semelhante ao zsh e não exigir “mais digitação”.

Desvantagens, estabilidade e compatibilidade

  • Vários usuários saíram após travamentos frequentes; a estabilidade de um shell é considerada crítica. Uma grande fonte de problemas foram versões do prompt-toolkit.
  • Incompatibilidades com fluxos de trabalho do Bash/zsh (por exemplo, uso de fzf, novas linhas em substituição de comando, peculiaridades fora do padrão) são pontos de dor recorrentes.
  • Alguns o veem como pouco padronizado demais para compartilhar comandos com colegas ou para usar em shebangs.
  • O rastreador de issues no GitHub é citado como motivo para “ficar com o diabo que você conhece”.

Python como base: preocupações e contra-argumentos

  • Há receios de que os problemas de dependência e empacotamento do Python afetem a confiabilidade do shell.
  • Contra-argumento: o Bash não tem gerenciamento de dependências nenhum; o xonsh em si tem poucas dependências e, na prática, atualizações de Python exigem principalmente uma reinstalação rápida.

Escolha de shell: novo versus antigo

  • Debate sobre investir em shells modernos (xonsh, nushell, fish, elvish, etc.) versus o onipresente Bash/POSIX.
  • Alguns priorizam portabilidade e aprendizado mínimo (bash/sh em todo lugar).
  • Outros defendem conforto e produtividade em suas próprias máquinas, usando Bash apenas quando necessário.

Alternativas e shells com dados estruturados

  • Outros shells “embutidos em linguagem” ou orientados a objetos/estruturados mencionados: nushell, marcel, rash, scsh, abordagens baseadas em Tcl, elvish, murex, rc, eshell no Emacs.
  • Desejo por shells/ferramentas que passem objetos ou JSON em vez de texto, saídas padronizadas legíveis por máquina e análise de argumentos/ajuda integradas.

LLMs e mudanças no fluxo de trabalho

  • Pelo menos um usuário relata ter substituído em grande parte o xonsh por GPT‑4 para scripts rápidos e tarefas de cola, embora outros observem que os LLMs atuais ainda têm dificuldade em domínios de nicho como Nix moderno.