macOS
brew install oils-for-unixlocal Homebrew formula metadata
brew
Bash-compatible Unix shell with more consistent syntax and semantics. Version 0.37.0 via Homebrew; verified 2026-06-22.
install
brew install oils-for-unixlocal Homebrew formula metadata
sudo apk add oils-for-unixAlpine Linux edge package indexes · oils-for-unix · source: dl-cdn.alpinelinux.org
nix profile install nixpkgs#oils-for-unixnixpkgs package indexes · pkgs/by-name/oi/oils-for-unix/package.nix · source: api.github.com
sudo pacman -S oils-for-unixArch Linux sync databases · oils-for-unix · source: geo.mirror.pkgbuild.com
sudo zypper install oils-for-unixopenSUSE Tumbleweed package metadata · oils-for-unix · source: download.opensuse.org
sudo dnf install osh-clientFedora Rawhide package metadata · osh-client · source: dl.fedoraproject.org
overview
Bash-compatible Unix shell with more consistent syntax and semantics
history
Oils for Unix is a shell project that contains OSH, a POSIX/bash-compatible shell for existing scripts, and YSH, a newer shell language aimed at programmers who want shell's process orchestration with more regular syntax and data structures.
Andy Chu began Oils in 2016 as an independent project to restore and re-imagine the Unix shell. The GitHub repository was created on 2016-11-15, and Chu's resume describes the work as an independent, non-profit language-engineering project funded by NLnet from 2022 to 2026.
The project deliberately took a compatibility-first path. Chu's 2021 explanation separates POSIX shell, bash, OSH, and Oil: OSH is the implementation intended to run existing shell scripts, while Oil was the incompatible new language intended to fix decades of accumulated shell language problems. The same essay says OSH had run existing scripts since January 2018 and had matured through regular releases.
In 2023 the project renamed itself from Oil/Oil Shell to Oils for Unix, with OSH and YSH as the named subprojects. The rename clarified the difference between the compatible shell and the new shell language, provided a globally unique package and project identity, and matched the busybox-like release layout with `oils-for-unix` plus `osh` and `ysh` symlinks.
Oils has a larger footprint than the other shell packages in this batch: the GitHub API reported 3,357 stars and 193 forks for `oils-for-unix/oils`, and Homebrew's 2026-07-01 formula API reported 331 installs over 365 days. The formula also records the old Homebrew name `oil`, showing the packaging transition caused by the 2023 rename.
NLnet's project page frames Oils as an upgrade path from traditional shells like bash to a more structured language and runtime, with OSH running thousands of lines of unmodified POSIX and bash scripts and YSH offering a language influenced by Python, Ruby, JavaScript, JSON, and YAML. That external funding and packaging across Homebrew, apk, Nix, Arch, and openSUSE-style systems give Oils more than hobby-project status, even though it remains specialized.
Developers use OSH to test or run existing shell scripts under a more explicit implementation, and use YSH for new scripts where shell-like command composition is useful but bash syntax is too irregular. The README shows `bin/osh` for interactive use or for running an existing script, and `bin/ysh` for the newer language.
The implementation model matters: the source is written in Python for easier development, then translated to C++ with custom tools so released executables are fast, small, and do not depend on Python. The project asks users to consume release tarballs from `oils.pub` rather than cloning the development repository.
Oils is significant because it treats shell as both legacy infrastructure and language-design territory. Package maintainers see the practical side in the formula: one source tarball installs `oils-for-unix`, `osh`, and `ysh`, depends on readline, and conflicts with packages that also install an `osh` binary.
For shell/package historians, Oils sits at the intersection of POSIX shell compatibility, bash's network effect, language migration strategy, and distribution naming. Its rename from `oil` to `oils-for-unix` is unusually well documented and visible directly in package-manager metadata.
security posture
generalized runtime or code generation signal.
yellow risk · medium confidence · runtime
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
oils-for-unix | cli | global executable | |
osh | cli | global executable | |
ysh | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
install metadata
| Package key | brew:oils-for-unix |
|---|---|
| Version | 0.37.0 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/oils-for-unix |
| Homepage | https://oils.pub/ |
| Repository | https://github.com/oils-for-unix/oils |
| Upstream docs | https://github.com/oils-for-unix/oils#readme |
| License | Apache-2.0 |
| Source archive | https://oils.pub/download/oils-for-unix-0.37.0.tar.gz |
| Last updated | 2026-06-22T14:05:40-07:00 |
| Pulse | updated |
| Dependencies | readline |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | oils-for-unix |
| Version Scheme | 0 |
| Revision | 0 |
| Conflicts With |
|
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
oils-for-unix
nix profile install nixpkgs#oils-for-unixoils-for-unix 0.37.0-r0
Unix shell with JSON-compatible structured data
sudo apk add oils-for-unixoils-for-unix-bash 0.37.0-r0
oils-for-unix as /bin/bash
sudo apk add oils-for-unix-bashoils-for-unix-binsh 0.37.0-r0
oils-for-unix as /bin/sh
sudo apk add oils-for-unix-binshoils-for-unix-doc 0.37.0-r0
Unix shell with JSON-compatible structured data (documentation)
sudo apk add oils-for-unix-docoils-for-unix 0.37.0-3
Oils for Unix: OSH and YSH shells
sudo pacman -S oils-for-unixoils-for-unix 0.37.0-1.2
A bash compatible shell and a new modern shell
sudo zypper install oils-for-unixosh-client 1.1.1-7.fc45
OpenScanHub CLI client
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-clientosh-common 1.1.1-7.fc45
OpenScanHub shared files for client, hub and worker
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-commonosh-hub 1.1.1-7.fc45
OpenScanHub xml-rpc interface and web application
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-hubosh-hub-conf-devel 1.1.1-7.fc45
OpenScanHub hub devel configuration
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-hub-conf-develosh-worker 1.1.1-7.fc45
OpenScanHub worker
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-workerosh-worker-conf-devel 1.1.1-7.fc45
OpenScanHub worker devel configuration
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-worker-conf-develosh-worker-manager 1.1.1-7.fc45
OpenScanHub worker manager
https://github.com/openscanhub/openscanhub/
sudo dnf install osh-worker-managersource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.