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.