You can install xonsh using
pip, or from source.
$ conda config --add channels conda-forge $ conda install xonsh
$ pip install xonsh
$ python setup.py install
Debian/Ubuntu users can install xonsh from the repository with:
$ apt install xonsh
Xonsh is available on bionic bever (version 0.6.0) and artful aardvark (version 0.5.12).
Fedora users can install xonsh from the repository with:
$ dnf install xonsh
Arch Linux users can install xonsh from the official community repository with:
$ pacman -S xonsh
Note that some of these may require
If you run into any problems, please let us know!
Xonsh currently has the following external dependencies,
Pip supports “extra” dependencies in the form of
the list in the brackets identify the optional features
Xonsh currently has the following extras
ptk: prompt-toolkit >= 2.0: advanced readline library, line-editing
pygments: pygments >=2.2: syntax-highlighting
proctitle: setproctitle: change the title of terminal to reflect the current subprocess
linux: distro: linux specific platform information
mac: gnureadline: GNU’s featureful version of readline
In addition, xonsh integrates with Jupyter, an in-browser REPL, enabling the use of xonsh in jupyter notebooks
Possible conflicts with Bash¶
Depending on how your installation of Bash is configured, Xonsh may have trouble loading certain shell modules. Particularly if you see errors similar to this when launching Xonsh:
bash: module: line 1: syntax error: unexpected end of file bash: error importing function definition for `BASH_FUNC_module' bash: scl: line 1: syntax error: unexpected end of file bash: error importing function definition for `BASH_FUNC_scl' bash: module: line 1: syntax error: unexpected end of file bash: error importing function definition for `BASH_FUNC_module' bash: scl: line 1: syntax error: unexpected end of file bash: error importing function definition for `BASH_FUNC_scl'
…You can correct the problem by unsetting the modules, by adding the following
lines to your
unset module unset scl
Default Ubuntu .bashrc breaks Foreign Shell Functions¶
Xonsh supports importing functions from foreign shells using the ForeignShellFunctionAlias class, which calls functions as if they were aliases. This is implemented by executing a command that sources the file containing the function definition and then immediately calls the function with any necessary arguments.
The default user ~/.bashrc file in Ubuntu 15.10 has the following snippet at the top, which causes the script to exit immediately if not run interactively.
# If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
This means that any function you have added to the file after this point will be registered as a xonsh alias but will fail on execution. Previous versions of Ubuntu have a different test for interactivity at the top of the file that yields the same problem.