Skip to content
Back to top
View this page
Edit this page

# the xonsh shell

~
~

Xonsh (sounds like “consh”) is a modern, full-featured and cross-platform python shell. The language is a superset of Python 3 with seamless integration of shell functionality and commands. It works on all major systems including Linux, OSX, and Windows. Xonsh is meant for the daily use of experts and novices.

## Comparison

Xonsh is significantly different from most other shells or shell tools. The following table lists built in features and capabilities that various tools may or may not share.

| Bash | zsh | plumbum | fish | IPython | xonsh
--- | --- | --- | --- | --- | --- | ---
Meant as a shell | ✓ | ✓ |  | ✓ |  | ✓
Native cross-platform |  |  | ✓ | ✓ | ✓ | ✓
Practical language |  |  | ✓ | ✓ | ✓ | ✓
Typed variables and objects |  |  | ✓ | ✓ | ✓ | ✓
Syntax highlighting |  | ✓ |  | ✓ | ✓ | ✓
Large standard library |  | ✓ |  |  | ✓ | ✓
Stays readable at scale |  |  | ✓ |  |  | ✓
Testable |  |  | ✓ |  |  | ✓
User-patchable |  |  | ✓ |  |  | ✓
Package and deps manager |  |  |  |  |  | ✓
AI friendly |  |  |  |  |  | ✓
Rich history backend |  |  |  |  |  | ✓

## Installation

Xonsh can be installed and run with various methods:

- Xonsh Installation General Guide
- AppImage
- Docker container

## Guides

- Tutorial
- Tutorial: History
- Tutorial: Macros
- Tutorial: Extensions (Xontribs)
- Tutorial: Xonsh Projects
- Tutorial: Events
- Tutorial: Programmable Tab-Completion
- Tutorial: Write Your Own History Backend
- Tutorial: Subprocess Strings
- Tutorial: `prompt_toolkit` custom keybindings
- Bash to Xonsh Translation Guide
- Editor and IDE Support
- Subprocess Types Table
- Python Virtual Environments
- Keyboard Shortcuts

## Config Files and Settings

- Run Control File
- Updating and customizing xonsh
- Environment Variables
- Built-in Aliases
- Core Events
- Platform-specific tips and tricks

## Contributing

We highly encourage contributions to xonsh! If you would like to contribute, it is as easy as forking the repository on GitHub, making your changes, and issuing a pull request. If you have any questions about this process don’t hesitate to join to Xonsh Zulip Community.

See the Developer’s Guide for more information about contributing.

## Python versions support policy

Xonsh adopts NEP-0029 in supporting Python versions. Simply speaking a minor Python release (X.*) will be supported for 42 months from its date of initial release. Since Python has adopted yearly release cycle, most of the time, the latest 4 minor versions of Python would be supported at any given time.

## Contact Us

If you have questions or comments, please:

- Open technical issue

- Ask question to community (new)

- Join Zulip Community with core xonsh developers

- Page us on Gitter or IRC channel #xonsh on OFTC

- Join the mailing list

- Public talks

## Helpful Links

- GitHub Repository: releases, changelog

- GitHub topics: xonsh and xontrib

- DockerHub images

- Cookiecutter template to creating xontribs

- Index

- Module Index

- Search Page

Fork me on GitHub

## Development Spiral

- Xonsh API
- Developer’s Guide
- Xonsh Change Log
- Frequently Asked Questions
- Wishlist & To-Dos