{"id":13395382,"url":"https://github.com/xxh/xxh","last_synced_at":"2025-10-03T03:30:27.161Z","repository":{"id":37279939,"uuid":"219294494","full_name":"xxh/xxh","owner":"xxh","description":"🚀 Bring your favorite shell wherever you go through the ssh. Xonsh shell, fish, zsh, osquery and so on.","archived":false,"fork":false,"pushed_at":"2024-06-25T18:18:03.000Z","size":2320,"stargazers_count":5348,"open_issues_count":27,"forks_count":108,"subscribers_count":43,"default_branch":"master","last_synced_at":"2024-10-30T00:09:59.119Z","etag":null,"topics":["awesome","awesome-ssh","bash","devops","fish","fisher","hacking-tools","linux","ohmybash","ohmyfish","ohmyzsh","openssh","osquery","powerlevel10k","powerlevel9k","shell","ssh","xonsh","xxh","zsh"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xxh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"anki-code","custom":"https://www.buymeacoffee.com/xxh"}},"created_at":"2019-11-03T12:04:13.000Z","updated_at":"2024-10-29T14:29:50.000Z","dependencies_parsed_at":"2024-03-20T16:15:14.478Z","dependency_job_id":"f4ea7e3e-ef93-4954-9d0e-4348c0a52fa2","html_url":"https://github.com/xxh/xxh","commit_stats":{"total_commits":713,"total_committers":26,"mean_commits":"27.423076923076923","dds":0.08976157082748948,"last_synced_commit":"1f8dab49d17077925adb1bbffd4c7ddb3f54dee0"},"previous_names":[],"tags_count":93,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxh%2Fxxh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxh%2Fxxh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxh%2Fxxh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxh%2Fxxh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxh","download_url":"https://codeload.github.com/xxh/xxh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234916138,"owners_count":18906642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-ssh","bash","devops","fish","fisher","hacking-tools","linux","ohmybash","ohmyfish","ohmyzsh","openssh","osquery","powerlevel10k","powerlevel9k","shell","ssh","xonsh","xxh","zsh"],"created_at":"2024-07-30T17:01:55.485Z","updated_at":"2025-10-03T03:30:27.154Z","avatar_url":"https://github.com/xxh.png","language":"Python","funding_links":["https://github.com/sponsors/anki-code","https://www.buymeacoffee.com/xxh"],"categories":["Python","SSH","Integrations","Fancy shell sessions","bash","Tools","Shell","Utilities","hacking-tools","Developer Tools","🐧 Linux","\u003ca name=\"networking\"\u003e\u003c/a\u003eNetworking","Command-Line Productivity","Apps"],"sub_categories":["Packages","Prompt tweaks","Python","SSH","Command Line Tools","simulations","Tools"],"readme":"\u003cp align=\"center\"\u003eYou stuffed your command shell with aliases, tools, and colors but you lose it all when using ssh. The mission of xxh is to bring your favorite shell wherever you go through ssh without root access or system installations. Xonsh shell, fish, zsh, osquery and so on.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e  \nIf you like the idea of xxh click ⭐ on the repo and \u003ca href=\"https://twitter.com/intent/tweet?text=Bring%20your%20favorite%20shell%20wherever%20you%20go%20through%20the%20ssh.\u0026url=https://github.com/xxh/xxh\" target=\"_blank\"\u003etweet\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003ca href='https://github.com/xxh/xxh#installation-methods'\u003e\u003cimg alt='[xxh demo]' src='https://raw.githubusercontent.com/xxh/static/master/xxh-demo2.gif'\u003e\u003c/a\u003e\n\n\u003ctable border=\"0\" width=\"100%\"\u003e\n\u003ccol style=\"width:33%\"\u003e\n\u003ccol style=\"width:33%\"\u003e\n\u003ccol style=\"width:33%\"\u003e\n\u003ctbody\u003e\n\u003ctr style=\"border: 0px !important;\"\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003ePortable\u003c/b\u003e. Preparing portable shells and plugins occurs locally, and then xxh uploads the result to the host. No installations or root access on the host required. Security and host environment are a prime focus.\u003c/td\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003eHermetic\u003c/b\u003e. Deleting the \u003ccode\u003e~/.xxh\u003c/code\u003e directory from the remote host will make the remote environment function as if xxh was never there. By default your home is the \u003ccode\u003e.xxh\u003c/code\u003e directory and you can \u003ca href=\"https://github.com/xxh/xxh/wiki#how-to-set-homeuser-as-home-on-host\"\u003echoose the hermetic level of your xxh session\u003c/a\u003e.\u003c/td\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003eCareful\u003c/b\u003e. No blindfolded copying config files from local to remote host. Following privacy and repeatability practices, the best way is to fork the xxh plugin or shell example and pack your configs into it. \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr style=\"border: 0px !important;\"\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003eBe open and fork-ready\u003c/b\u003e. Every xxh repo could be forked, customized, and reused without waiting for a package management system, xxh release, or any third party packages. Five shells are currently supported and more could be added by the community.\u003c/td\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003eDo more\u003c/b\u003e. The xxh packages are not only about shells. Any type of tool or code could be behind an entrypoint. If you want to run \u003ca href=\"https://github.com/browsh-org/browsh\"\u003ebrowsh\u003c/a\u003e or \u003ca href=\"https://github.com/juftin/browsr\"\u003ebrowsr\u003c/a\u003e on the remote host, just put its portable version as an entrypoint in the xxh-shell.\u003c/td\u003e\n\u003ctd valign=\"top\" style=\"border: 0px !important;\"\u003e\u003cb\u003eChameleon\u003c/b\u003e. Switching shells is as easy as possible and you don't have to be locked in to one shell. Choose your current shell based on the task you want to solve: \u003ccode\u003exxh anyhost +s xonsh\u003c/code\u003e for a Python environment, osquery for simple querying, fish for modern features or time-tested zsh and bash for speed. \u003c/td\u003e   \n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n \n## Installation methods\n#### [PyPi 3](https://pypi.org/project/xxh-xxh/) \n```shell script\npip install xxh-xxh\n# OR from repo: pip install git+https://github.com/xxh/xxh\n```\n\n#### [pipx](https://pipxproject.github.io/pipx/) - good alternative to brew and pip, read [comparison](https://pipxproject.github.io/pipx/comparisons/)\n```shell script\npipx install xxh-xxh\n```\n\n#### [xonsh](https://xon.sh/) shell\n\n```xsh\nxpip install xxh-xxh\n```\n\n#### [Conda-forge](https://conda-forge.org/) [feedstock](https://github.com/conda-forge/xxh-xxh-feedstock)\n```shell script\nconda config --add channels conda-forge\nconda install xxh-xxh\n```\n\n#### [Homebrew](https://brew.sh/)\n```shell script\nbrew install xxh\n```\n\n#### [Macports](https://www.macports.org/)\n```shell script\nsudo port install xxh\n```\n\n#### Linux portable binary\n```shell script\nmkdir ~/xxh \u0026\u0026 cd ~/xxh\nwget https://github.com/xxh/xxh/releases/download/0.8.12/xxh-portable-musl-alpine-Linux-x86_64.tar.gz\ntar -xzf xxh-portable-musl-alpine-Linux-x86_64.tar.gz\n./xxh\n```\n\n#### Linux [AppImage](https://appimage.org/)\n```shell script\nmkdir ~/xxh \u0026\u0026 cd ~/xxh\nwget -O xxh https://github.com/xxh/xxh/releases/download/0.8.12/xxh-x86_64.AppImage\nchmod +x xxh \u0026\u0026 ./xxh\n```\nTo run AppImage on Alpine Linux [install](https://github.com/sgerrand/alpine-pkg-glibc/issues/153#issuecomment-795334536) [alpine-pkg-glibc](https://github.com/sgerrand/alpine-pkg-glibc) with [localedef](https://github.com/sgerrand/alpine-pkg-glibc#locales).\n\n## Shells\n\nCurrently supported OS for the target host is Linux on x86_64. [ARM support](https://github.com/xxh/xxh/issues/188) from the community.\n\n| xxh-shell                                                             | status     | [xxh-plugins](https://github.com/xxh/xxh/wiki#plugins) | [seamless](https://github.com/xxh/xxh/wiki#seamless-mode) | demo |\n|-----------------------------------------------------------------------|------------|-------------|---------|------|\n| **[xonsh](https://github.com/xxh/xxh-shell-xonsh)**                   | stable     | [autojump](https://github.com/xxh/xxh-plugin-xonsh-autojump), [[+]](https://github.com/xxh/xxh-plugin-xonsh-example) | `xxh.xsh` | \u003ca href=\"https://asciinema.org/a/osSEzqnmH9pMYEZibNe2K7ZL7\" target=\"_blank\"\u003edemo\u003c/a\u003e | \n| **[zsh](https://github.com/xxh/xxh-shell-zsh)**                       | stable     | [ohmyzsh](https://github.com/xxh/xxh-plugin-zsh-ohmyzsh), [p10k](https://github.com/xxh/xxh-plugin-zsh-powerlevel10k), [[+]](https://github.com/xxh/xxh-plugin-zsh-example)  | `xxh.zsh`   |  \u003ca href=\"https://asciinema.org/a/rCiT9hXQ5IdwqOwg6rifyFZzb\" target=\"_blank\"\u003edemo\u003c/a\u003e |\n| **[fish](https://github.com/xxh/xxh-shell-fish)**                     | stable     | [ohmyfish](https://github.com/xxh/xxh-plugin-fish-ohmyfish), [fisher](https://github.com/xxh/xxh-plugin-fish-fisher), [userconfig](https://github.com/xxh/xxh-plugin-fish-userconfig), [[+]](https://github.com/xxh/xxh-plugin-fish-example) | [todo](https://github.com/xxh/xxh/issues/74) |\n| **[bash](https://github.com/xxh/xxh-shell-bash)**                     | stable     | [ohmybash](https://github.com/xxh/xxh-plugin-bash-ohmybash), [[+]](https://github.com/xxh/xxh-plugin-bash-example) | `xxh.bash`  | \u003ca href=\"https://asciinema.org/a/314508\" target=\"_blank\"\u003edemo\u003c/a\u003e |\n| **[osquery](https://github.com/xxh/xxh-shell-osquery)**               | beta       |             | | |\n| **[fish-appimage](https://github.com/xxh/xxh-shell-fish-appimage)**   | alpha      |             | | |\n| **[elvish](https://github.com/krageon/xxh-shell-elvish)**   | alpha      |             | | |\n\n[Search xxh shell on Github](https://github.com/search?q=xxh-shell\u0026type=Repositories) or [Bitbucket](https://bitbucket.org/repo/all?name=xxh-shell) or [create your shell entrypoint](https://github.com/xxh/xxh-shell-example) to use another portable shell.  \n\n### Prerun plugins\n[Prerun plugins](https://github.com/xxh/xxh/wiki#plugins) allow you to bring any portable tools, dotfiles, or aliases to your xxh session before running the shell. \n\nPinned plugins: **[core](https://github.com/xxh/xxh-plugin-prerun-core)** (xxh-sudo, xxh-screen, xxh-tmux), **[dotfiles](https://github.com/xxh/xxh-plugin-prerun-dotfiles)**, **[docker](https://github.com/xxh/xxh-plugin-prerun-docker)**, **[python](https://github.com/xxh/xxh-plugin-prerun-python)**, **[xxh](https://github.com/xxh/xxh-plugin-prerun-xxh)**, **[vim](https://github.com/xxh/xxh-plugin-prerun-vim)**, **[zoxide](https://github.com/xxh/xxh-plugin-prerun-zoxide)**, **[starship](https://github.com/izissise/xxh-plugin-prerun-starship)**. There is [cookiecutter template to create a prerun plugin](https://github.com/xxh/cookiecutter-xxh-plugin-prerun).\n\n## Usage\nUse `xxh` instead of `ssh` when connecting to Linux hosts without changing ssh arguments:\n```\nxxh \u003chost from ~/.ssh/config\u003e\nxxh [ssh arguments] [user@]host[:port] [xxh arguments]\nxxh local [xxh arguments]\n```\n\nCommon examples (use `xxh --help` to get info about arguments):\n```xsh\nxxh anyhost                                       # Connect to the host\nxxh -i id_rsa -p 2222 anyhost                     # Using ssh arguments: port and key\nxxh user@host +c et                               # Using EternalTerminal (https://github.com/MisterTea/EternalTerminal)\nxxh anyhost +s zsh +i                             # Set the shell and install it without yes/no question\nxxh anyhost +s xonsh +hhh \"~\"                     # Set /home/user as home directory (read Q\u0026A)\nxxh anyhost +s bash +I xxh-plugin-bash-vim        # Preinstall a plugin\nxxh anyhost +if +q                                # Force reinstall xxh on the host in quiet mode\nxxh anyhost +hh /tmp/xxh +hhr                     # Upload xxh to /tmp/xxh and remove when disconnecting\nsource xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh  # Connect in seamless mode with ohmyzsh plugin\nxxh local +s xonsh                                # Experimental: build xxh environment inplace and without ssh\n```\nFor reusing arguments and simplifying xxh usage (like shortening to `xxh anyhost`), there is a [config file](https://github.com/xxh/xxh/wiki#config-file).\n\n**Why the plus sign for the xxh arguments?** The xxh is using the plus sign for xxh arguments to preserve the ability to use the minus sign for the original ssh arguments. This allows just replacing the first two letters in the `ssh` command to convert it to the `xxh` command. Also see the [discussion](https://github.com/xxh/xxh/issues/129).\n \n### Installing xxh packages\n```bash\nxxh [+I xxh-package +I ...] [+L] [+RI xxh-package +RI ...] [+R xxh-package +R ...]\n```\nDifferent ways to set the xxh package source:\n```xsh\nxxh +I xxh-shell-example                                         # install from https://github.com/xxh\nxxh +I https://github.com/xxh/xxh-shell-example                  # short url for github only, for other sources use examples below or add support\nxxh +I https://github.com/xxh/xxh-shell-example/tree/mybranch    # short url for github only, for other sources use examples below or add support\nxxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example                 # long url for any git repo\nxxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example/tree/mybranch   # github only branch support\nxxh +I xxh-shell-example+git+git@github.com:githubuser/xxh-shell-example.git          # install from private repository using ssh\nxxh +I xxh-shell-example+path+/home/user/my-xxh-dev/xxh-shell-example                 # install from local path\n```\n\n### Using xxh inplace without ssh connection\n\nThis is experimental magic. Please read the text below twice.\n\nIf you have shell access on the host or you're in a docker container and you can't ssh to it \nthen you can download and build a hermetic xxh environment inplace. The `xxh local` command works \nexactly like `xxh remote_host` and creates a hermetic environment in `~/.xxh` by default.\n\nAt this time we don't have portable build tools like `git`, `wget`, `curl`, `tar` and others which \ncould be required by some xxh package build scripts. When running `xxh local` it is expected that the tools are present on the host.\n\nTo run xxh inplace on Linux x86_64 just copy and paste these bash commands:\n```bash\nXH=~/.xxh \\\n \u0026\u0026 XD=https://github.com/xxh/xxh-portable/raw/master/result/xxh-portable-musl-alpine-Linux-x86_64.tar.gz \\\n \u0026\u0026 mkdir -p $XH \u0026\u0026 cd $XH \\\n \u0026\u0026 ( [[ -x $(command -v curl) ]] \u0026\u0026 curl -L $XD || wget -O- $XD ) | tar zxf - xxh \\\n \u0026\u0026 echo 'Usage: ./xxh local [+s xonsh/zsh/fish/osquery/bash]'\n```\nNext time you're on the host just run `~/.xxh/xxh local` and you will enter your xxh environment. \n\n## Examples of use cases\n### Python with pip everywhere without installation\n#### Way 1. Using xonsh\n```\nxxh anyhost +s xonsh\n\nanyhost\u003e python --version\nPython 3.8.2\n```\nYou'll get python-powered [xonsh](https://xon.sh) shell with portable python and pip on the host without any system installations on the host. \nYou can install PyPi packages manually or bring them with you automatically by using [xxh-plugin-prerun-dotfiles](https://github.com/xxh/xxh-plugin-prerun-dotfiles). Also, don't forget about xxh-plugins like [zoxide](https://github.com/xxh/xxh-plugin-prerun-zoxide).\n\n#### Way 2. Using portable python on any xxh shell\n```\nxxh +RI xxh-plugin-prerun-python\nxxh anyhost +s zsh\n\nanyhost\u003e python --version\nPython 3.8.2\nanyhost\u003e pip install pandas\n```\nUsing [xxh-plugin-prerun-python](https://github.com/xxh/xxh-plugin-prerun-python) you'll get a portable \nPython AppImage which can be used on a host without python and with any xxh shell.\n\n### Using docker on host without root access\n\nTry [xxh-plugin-prerun-docker](https://github.com/xxh/xxh-plugin-prerun-docker):\n```\nxxh +RI xxh-plugin-prerun-docker\nxxh anyhost +if\n\nanyhost\u003e xxh-docker-run\nanyhost\u003e docker ps                                                                                                                                                                                                                            \nCONTAINER ID        IMAGE               COMMAND\nanyhost\u003e docker run --rm hello-world | grep Hello\nHello from Docker!\nanyhost\u003e xxh-docker-stop\n```\n\n### Bring dotfiles to xxh session\n\nThere is the [xxh-plugin-prerun-dotfiles](https://github.com/xxh/xxh-plugin-prerun-dotfiles) plugin which creates config files \nwhen you go to the host using xxh. You can fork it and create your cozy settings once and forever.\n\n### Seamless Oh My Zsh ([demo](https://asciinema.org/a/rCiT9hXQ5IdwqOwg6rifyFZzb))\n```shell script\nsource xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh +if +q \n```\nThis command brings your current Oh My Zsh session theme to the xxh session. If you need more complex settings just fork \nthe [xxh-plugin-zsh-ohmyzsh](https://github.com/xxh/xxh-plugin-zsh-ohmyzsh) and hack it.\n\n### Read host as a table with [osquery](https://github.com/xxh/xxh-shell-osquery)\n```\n$ xxh anyhost +s osquery\nosquery\u003e SELECT * FROM users WHERE username='news';\n+-----+-----+----------+-------------+-----------------+-------------------+\n| uid | gid | username | description | directory       | shell             |\n+-----+-----+----------+-------------+-----------------+-------------------+\n| 9   | 9   | news     | news        | /var/spool/news | /usr/sbin/nologin |\n+-----+-----+----------+-------------+-----------------+-------------------+\n```   \n\n### All-in-one portable home\nxxh is very agile. You can create your own `xxh-shell` (the shell part means it has an entrypoint), which can have any portable tools\nthat could help you on the host. [Bash](https://github.com/xxh/xxh-shell-bash) xxh-shell is one of these \nplatforms that could be forked and stuffed.\n\n## [Questions and answers](https://github.com/xxh/xxh/wiki)\n\n- [Welcome to xxh family](https://github.com/xxh/xxh/wiki#welcome-to-xxh-family)\n  * [How it works](https://github.com/xxh/xxh/wiki#how-it-works)\n    + [Simple answer](https://github.com/xxh/xxh/wiki#simple-answer)\n    + [Detailed workflow with code](https://github.com/xxh/xxh/wiki#detailed-workflow-with-code)\n  * [Plugins](https://github.com/xxh/xxh/wiki#plugins)\n  * [Connection speed](https://github.com/xxh/xxh/wiki#connection-speed)\n  * [Seamless mode](https://github.com/xxh/xxh/wiki#seamless-mode)\n  * [Config file](https://github.com/xxh/xxh/wiki#config-file)\n- [Packages for xxh](https://github.com/xxh/xxh/wiki#packages-for-xxh)\n  * [Install shells and plugins](https://github.com/xxh/xxh/wiki#install-shells-and-plugins)\n- [Advanced](https://github.com/xxh/xxh/wiki#advanced)\n  * [How to set /home/user as home on host](https://github.com/xxh/xxh/wiki#how-to-set-homeuser-as-home-on-host)\n  * [Using sudo](https://github.com/xxh/xxh/wiki#using-sudo)\n  * [Using xxh in xxh session](https://github.com/xxh/xxh/wiki#using-xxh-in-xxh-session)\n  * [Target host is behind another host](https://github.com/xxh/xxh/wiki#target-host-is-behind-another-host)\n  * [Environment variables](https://github.com/xxh/xxh/wiki#environment-variables)\n- [Development and contribution](https://github.com/xxh/xxh/wiki#development-and-contribution)\n  * [The easiest way to debug shell and plugins](https://github.com/xxh/xxh/wiki#the-easiest-way-to-debug-shell-and-plugins)\n  * [Prerun plugins](https://github.com/xxh/xxh/wiki#prerun-plugins)\n  * [Change plugin run order](https://github.com/xxh/xxh/wiki#change-plugin-run-order)\n- [New questions](https://github.com/xxh/xxh/wiki#new-questions)\n\n## Development\n\n### xxh Development Environment\n\nIn the [xxh development environment](https://github.com/xxh/xxh/tree/master/xde) there is a full [dockerised](https://www.docker.com/) environment\nfor development, testing, and contribution. The process of testing and development is orchestrated by `xde` tool and is as \neasy as possible.\n\n### Vagrant based Plugin Development\n\nTo develop plugins, [Vagrant](https://www.vagrantup.com) supports starting [many configurations](https://app.vagrantup.com/boxes/search) of virtual machines using Virtualbox.\n\nSee [the Plugin Development folder](./plugin-development) for more details\n\n### We have teams\n\nIf you're in a team it does not mean you have an obligation to do something. The main goal of teams is to create groups\nof passionate people who could help or support solving complex problems. Some people could be an expert in one shell and a\nnewbie in another shell and mutual assistance is the key to xxh evolution. [Ask to join.](https://github.com/xxh/xxh/issues/50)\n\n## Thanks\n* **niess** for great [python-appimage](https://github.com/niess/python-appimage).\n* **probonopd** and **TheAssassin** for hard-working [AppImage](https://github.com/AppImage).\n* **Anthony Scopatz**, **Gil Forsyth**, **Jamie Bliss**, **David Strobach**, **Morten Enemark Lund** and **@xore** for amazing [xonsh shell](https://github.com/xonsh/xonsh).\n* **Roman Perepelitsa** for incredible [statically-linked, hermetic, relocatable Zsh](https://github.com/romkatv/zsh-bin).\n* **Johannes Altmanninger** and **Fabian Homborg** for extensive and portable [fish shell](https://github.com/fish-shell/fish-shell).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxh%2Fxxh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxh%2Fxxh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxh%2Fxxh/lists"}