Xonsh 0.2 Release Notes¶
Xonsh is a Python-ish, BASHwards-looking shell language and command prompt. The language is a superset of Python 3.4+ with additional shell primitives that you are used to from Bash and IPython. It works on all major systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily use of experts and novices alike.
Features include:
- Naturally typed environment variables
- Inherits the environment from BASH
- Uses BASH completion for subprocess commands
- Regular expression filename globbing
- Its own PLY-based lexer and parser
- xonsh code parses into a Python AST
- You can do all the normal Python things, like arithmetic and importing
- Captured and uncaptured subprocesses
- Pipes, redirection, and non-blocking subprocess syntax support
- Help and superhelp with ? and ??
- Command aliasing
- Multiline input, unlike ed
- History matching like in IPython
- Color prompts
- Low system overhead
- Rich history recording and replaying
Feedback, bug reports, and pull requests are always welcome!
Installation¶
You can install xonsh using conda, pip, or from source.
conda:
$ conda install -c scopatz xonsh
pip:
$ pip install xonsh
source: Download the source from github (zip file), then run the following from the source directory,
$ python setup.py install
ArchLinux users can install xonsh with e.g. yaourt or aura:
yaourt:
$ yaourt -Sa xonsh # yaourt will call sudo when needed
aura:
$ sudo aura -A xonsh
If you run into any problems, please let us know!
Dependencies¶
Polyphemus currently has the following external dependencies,
Run Time:
- Python v3.4+
- PLY
- prompt-toolkit (optional)
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 ask the mailing list (xonsh@googlegroups.com).
Contact Us¶
If you have questions or comments, please send them to the mailing list xonsh@googlegroups.com, contact the author directly, or open an issue on GitHub.
Join the mailing list here: https://groups.google.com/forum/#!forum/xonsh
Helpful Links¶
- Documentation - http://xonsh.org
- Mailing list - https://groups.google.com/forum/#!forum/xonsh
- GitHub Repository - https://github.com/scopatz/xonsh
- IRC: channel #xonsh on OFTC - http://www.oftc.net/
Changelog¶
- some v3.5 updates (#387) by scopatz [feature]
- fix to actually quit on certain signals (#386) by scopatz [bug]
- Display completions in columns. (#384) by jonathanslenders
- Display completions in columns. (#383) by jonathanslenders [feature]
- Added LimitedFileHistory.__iter__. Required for prompt_toolkit==0.50 (#382) by jonathanslenders [feature]
- Documentation updates (#376) by scopatz [docs]
- Expand FORCE_POSIX_PATHS behavior to cwd in FORMATTER_DICT (#373) by BYK [feature]
- Fix bug in attribute completer: unresolved reference oattr (#372) by BYK [bug]
- Add FORCE_POSIX_PATH option to force / as path separator on WINDOWS (#371) by BYK [feature]
- Allow environment variables in PROMPT (#370) by mdboom [feature]
- Fix for 122361e: history was partly broken. (#369) by jonathanslenders [bug]
- First attempt to make a hack for prompt-toolkit coloring (#368) by melund [feature]
- One fix to be compatible with prompt_toolkit==0.47 (#366) by jonathanslenders [feature]
- Fix error where _normpath wrapper converted ./ to ././ (#363) by melund [bug]
- tutorial: remove DEFAULT_ALIASES from aliases section (#361) by rbrewer123 [docs]
- Fix regression in _normpath. (#359) by melund [bug]
- Update _normpath wrapper to prevent removing a trailing slash (#357) by melund [bug, feature]
- fixed SUID issues, I think (#356) by scopatz [bug]
- allow xonsh to run unreadable binaries (#355) by larsks [bug]
- Rich History (#353) by scopatz [feature]
- remove logo printing from setup.py (#349) by RonnyPfannschmidt [build]
- Fix error when checking for indentation (#348) by BYK [bug]
- Added DIRS rule to environ (#347) by scopatz [feature]
- Added more cwd formatters (#346) by scopatz [feature]
- fix pretty printing bug on windows (#345) by adqm [bug]
- Prompt Indentation After Colon (#343) by scopatz [feature]
- prompt formatting functions may return None (#342) by scopatz [feature]
- add exception handling to prompt evaluation (#341) by scopatz [bug]
- fixes hanging indent error (#340) by scopatz [bug]
- Prompt toolkit fixes (#339) by scopatz [bug]
- Prevent os.path.normpath() from removing current dir (#337) by kseistrup [bug]
- Prevent os.path.normpath() from removing initial ‘./’ (#336) by kseistrup
- ignore case on completion (#335) by scopatz [feature]
- Some fixes for prompt-toolkit integration. (#334) by jonathanslenders [bug]
- open()’ed files were never closed (#333) by kseistrup [bug]
- Renaming a few variables (#332) by kseistrup [build]
- Hiding traceback in the shell (#331) by melund [feature]
- Assorted style changes (PEP8) (#330) by kseistrup [bug]
- Removed trailing whitespace (#328) by kseistrup [bug]
- Add -V/–version (#327) by kseistrup [feature]
- Add link to IRC (#325) by kseistrup [docs]
- ArchLinux installation instructions (#322) by kseistrup [docs]
- ArchLinux instructions (#321) by kseistrup [docs]
- Closes #307, do not use full path for completion, use basename only (#320) by naufraghi [bug]
- added login shell to bash (#319) by scopatz [bug]
- Fixing typos and end of line white space in docs (#317) by michaelaye [docs]
- Added config file for binstar build service (#314) by melund [build]
- fix for vim/emacs not coming back from background (#309) by adqm [bug]
- Remove the Python version restriction from the conda recipe (#304) by asmeurer [build]
- Add pretty printing (#303) by melund [feature]
- Enable locate_binary on Windows (#302) by BYK [bug, feature]
- Fix a bunch of hg related errors on Windows (#300) by BYK [bug]
- bash completions: use set() with declare -F (#292) by blueyed [feature]
- added command-not-found capability for ubuntu and debian (#287) by scopatz [feature]
- Temporary work-around for bug in conda-build (#284) by melund [build]
- Work-around a bug in “conda convert” (#283) by melund
- Catch cases where the commands launched by subprocess are not found. (#282) by melund [bug]
- Update to conda recipe (#279) by melund [build, feature]
- improved man tests (#271) by scopatz [feature]
- Favor runnable extensions on Windows (#270) by BYK
- aliases: fixed bash aliases with single quotes (#267) by mic-e [bug, feature]
- windows: automated builds via appveyor (#264) by rbrewer123 [build, feature]
- “source” alias (#263) by adqm [feature]
- Change handling of tilde (#261) by adqm [bug]
- windows: more cmd.exe builtins as aliases (#258) by rbrewer123 [feature]
- some minor cli changes to shell type (#255) by scopatz [feature]
- Fix prompt_toolkit autocompletion bug (#252) by anula [bug]
- Add possibility to insert indent in prompt_toolkit shell. (#251) by anula [feature]
- fix issue where prompt_toolkit is always preferred (#250) by adqm [bug]
- Add option to run xonsh in prompt_toolkit mode from command line. (#249) by anula [feature]
- Completion from man pages (#248) by zajaczajac [feature]
- windows: use PATHEXT to find runnable files and skip shebang parsing (#245) by rbrewer123 [bug, feature]
- Aliases as Environment Variable (#244) by adqm
- Fix bugs in LimitedFileHistory plus tests (#243) by anula [bug]
- proposed fix for alias bug from #241 (#242) by adqm [bug]
- Windows Shebang (#241) by adqm [bug]
- IO Redirection (#240) by adqm [feature]
- Add prompt output for mercurial repository branches and bookmarks (#239) by ngoldbaum [feature]
- windows: enable git branch checking in prompt (#238) by rbrewer123 [feature]
- windows: doc updates (#237) by rbrewer123 [docs]
- Env overhaul (#230) by scopatz [feature]
- Prompt toolkit as alternative shell (#229) by anula [feature]
- Update prompt to display different color branch name if git is dirty (#228) by gthole [feature]
- small fix from ProcProxy changes (#227) by adqm [bug]
- Add support for CDPATH (#225) by naufraghi [feature]
- ProcProxy Rewrite (#224) by adqm [feature]
- Feature: Windows support (#223) by rbrewer123 [feature]
- allow grouping syntax to be part of subprocess expressions (#222) by adqm
- timeit alias (#221) by scopatz [feature]
- Fix For Quoted Args (#219) by adqm [bug]
- completing module to import (#218) by zajaczajac [feature]
- Lazy JSON File (#216) by scopatz [feature]
- History object (#213) by aig787 [feature]
- Names in subprocess mode (#212) by adqm [feature]
- unpack targets in comprehension (#211) by scopatz [bug]
- cd Changes (#209) by adqm [bug, feature]
- Reorganize Job Control Code and Fix Bugs (#203) by adqm [bug]
- Added exec builtin support (#200) by aig787 [feature]
- wrap develop too (#199) by scopatz [bug, build]
- Documentation for Job Control (#197) by adqm [docs]
- Added readthedocs support (#196) by aig787 [docs]
- I see a string and I want to paint it black (#195) by scopatz [bug]
- Completer Update (#194) by adqm [feature]
- Completer Bugfix (#193) by adqm [bug]
- Attribute Completion (#192) by scopatz [feature]
- prevents detyping mappings as string to env. (#191) by scopatz [bug]
- Attempt to fix #188 (#190) by adqm [bug]
- More IO Redirection Options (#189) by adqm [feature]
- license updates. (#187) by scopatz [docs]
- Improved Command Suggestions (#186) by adqm [feature]
- Documentation Updates (#185) by adqm [docs]
- Completer Updates (#184) by adqm [bug, feature]
- Many PEP8 Changes (#183) by adqm [build]
- some landscape fixes (#182) by scopatz [build, feature]
- Glob Fix (#180) by adqm [bug]
- Bash completion clarifications (#179) by blink1073 [build]
- SSH fixes (#177) by adqm [bug]
- Un-detypes env for mutable value access (#175) by scopatz [bug]
- Pygments Hooks (#173) by scopatz [build, docs, feature]
- Attempt to fix #148 (#170) by adqm [bug]
- Interactive Flag, and Parser Bugfix (#169) by adqm [bug, feature]
- more robust subproc injection (#168) by scopatz [bug]
- Alternative Prompt Format Refactor (#165) by adqm [feature]
- Import hooks for xonsh files (
*.xsh
) (#164) by scopatz [feature] - Optimization for waiting for active job to stop (#163) by adqm [feature]
- Prompt via prompt (#162) by abadger [feature]
- Job control bugfix (#160) by adqm [bug]
- implements non-string sequences to @() (#159) by scopatz [feature]
- Change semantics for running executables from outside the path (#158) by adqm
- Fix lexer’s handling of # (#157) by adqm [bug]
- Fix #154 (#156) by adqm [bug]
- Error Reporting (#155) by adqm
- Job control (#152) by adqm [feature]
- Ignore Python keywords in subprocess mode (#151) by adqm [feature]
- xonsh should error on finding a line break inside a regex path (backtick) (#150) by adqm [bug]
- fix and tests for mutliple assignment (#149) by scopatz [bug]
- Use landscape.io (#145) by javValverde [build]
- Lexer Overhaul (#144) by adqm [feature]
- Version (#143) by adqm [feature]
- Command line switch –no-rc (#140) by mbollmann [feature]
- attempt to fix #131 (#138) by adqm [bug]
- xonsh should be able to run binaries outside the path, as well as scripts (#136) by adqm [bug]
- lstrip the first line of shell input (#130) by SmartViking [feature]
- Documentation for running scripts (#129) by adqm [docs]
- Handling of ~ (#128) by adqm [bug, feature]
- Allow arguments for xonsh shell scripts (#126) by adqm [bug]
- Prompt formatter refactor (#125) by abadger [feature]
- travis badge to README (#123) by juanpabloaj [docs]
- Nested structures (#122) by adqm [bug]
- Allow running scripts not in the path (#121) by adqm [feature]
- Modify string regex (allow multiline strings) (#120) by adqm [bug]
- Complex numbers (#119) by adqm [bug, feature]
- Implement pushd, popd, dirs (#116) by adqm [feature]
- Tabulated command suggestions, and tried to improve readability here and... (#115) by SmartViking [feature]
- Fall back to using git binary to determine branch when necessary (#114) by adqm [feature]
- Syntax (#113) by adqm [feature]
- convert result of ${} expression to string (#112) by adqm [feature]
- Removed subproc_line, fixed typos, small changes (#105) by SmartViking [build]
- Add an explanation for shift+tab indentation to the docs (#104) by eyalzek [docs]
- Documentation and refactoring of window title and suggestions (#103) by adqm [docs]
- Nested Lists and Tuples (#100) by scopatz [bug]
- fix for comment parsing (#99) by adqm [bug]
- fix for comment only lines (#98) by scopatz [bug]
- Non-recursive refactor of shell.cmdloop() (#97) by SavinaRoja [bug]
- main.py takes script file or script on stdin (#95) by adqm [feature]
- updating the webm with some slight pauses (#94) by SavinaRoja [docs]
- Tab Completion on OS X (#93) by corbinbs [bug]
- specify full path to README.rst (#89) by cwalv [bug]
- Updated environ.current_branch to bounce if git isnt installed and check... (#83) by glenbot [bug]
- HTML5 Video format for the demo (#82) by SavinaRoja [build]
- Fixes #56 about taking over bash aliases into xonsh. (#77) by ivh [feature]
- update oldpwd when using cd (#76) by admiralobvious [feature]
- minimize calls to reset_screen_size (#75) by adqm [bug]
- Attempt to fix #73 (#74) by adqm [bug]
- Auto-completer: wrap paths in quotes where necessary (#72) by adqm [feature]
- Propagate SyntaxError message in exec-ing .xonshrc to the user (#67) by naufraghi [feature]
- Added cleaner error for commands not found (#65) by Samathy [feature]
- subprocess mode error message (#58) by adqm [feature]
- Fix typos in faq (#57) by naufraghi [bug]
- parser_test_table.py to gitignore (#53) by juanpabloaj [build]
- a first approach to a travis file (#52) by juanpabloaj [build]
- gitignore: lexer_table and parser_table added (#51) by juanpabloaj [build]
*.egg
to gitignore (#50) by juanpabloaj [build]- Add a #coding declaration to setup.py (#47) by katrielalex [build]
- Prompt documentation (for #31) (#43) by mbollmann
- Second attempt at fix for #34 (#42) by adqm [bug]
- Accept -c argument (a la bash) (#41) by adqm [feature]
- fix for multiline prompt (given the update from #31) (#40) by adqm [bug]
- Update to #38 (Virtual Terminal Title) (#39) by adqm [feature]
- change terminal title to show message or current directory (#38) by adqm [feature]
- Attempt to fix #34 (#37) by adqm [bug]
- Slightly modified cd error messages (#36) by adqm [feature]
- Auto-formatting prompt string (#31) by mbollmann [feature]
- fix #28 (#30) by adqm [bug]
- Fix for issue “Multi-line input never terminates #13” (#19) by torgny [bug, feature]
- changed aliasing to support optional return values, and interactive prompts (#15) by jamiees2 [feature]
- xonsh’s not polyphemus (#14) by crbates
- cd with no arguments now changes to home dir. (#11) by abingham [bug, feature]
- Pipes (#10) by jamiees2 [feature]
- Fix #1 by uppercasing readme.rst. (#3) by paradoxxxzero [feature]