Skip to content
A new Unix shell. Development on hold. Looking for ways to fund the next iteration. Suggestions welcome.
Branch: master
Clone or download
Latest commit 0f03c97 Feb 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Update README. Feb 7, 2019
doc Rewrite sieve. May 7, 2018
img Rearranging. May 5, 2015
pkg Update README. Feb 7, 2019
CONTRIBUTING.md Add contributing guidelines. Jul 1, 2018
LICENSE Make license easier to detect. Apr 2, 2018
README.md Update README. Feb 7, 2019
main.go Change default prompt. May 9, 2018

README.md

A surprisingly powerful Unix shell

Note

Development of oh is currently on hold. I'm looking for ways to fund the next iteration which will focus on improving oh's interactive features while making the code more robust. Suggestions are welcome.

Description

Oh is a Unix shell. If you've used other Unix shells, oh should feel familiar.

gif

Where oh diverges from traditional Unix shells is in its programming language features.

At its core, oh is a heavily modified dialect of the Scheme programming language, complete with first-class continuations and proper tail recursion. Like early Scheme implementations, oh exposes environments as first-class values. Oh extends environments to allow both public and private members and uses these extended first-class environments as the basis for its prototype-based object system.

Written in Go, oh is also a concurrent programming language. It exposes channels, in addition to pipes, as first-class values. As oh uses the same syntax for code and data, channels and pipes can, in many cases, be used interchangeably. This homoiconic nature also allows oh to support fexprs which, in turn, allow oh to be easily extended. In fact, much of oh is written in oh.1

For a detailed comparison to other Unix shells see: Comparing oh to other Unix Shells

Installing

With Go 1.5 or greater installed,

go get github.com/michaelmacinnis/oh

According to gox, oh compiles on the following platforms:

darwin/386
darwin/amd64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/ppc64
linux/ppc64le
netbsd/386
netbsd/amd64
netbsd/arm
openbsd/386
openbsd/amd64
plan9/386
plan9/amd64
solaris/amd64
windows/386
windows/amd64

(Oh compiles and runs on Plan 9 and Windows but should be considered experimental on those plarforms. On Solaris, interactive features are limited).

Using

For more detail see: Using oh

License

MIT


1. ^ Currently, 485 of 7046 lines of code are written in oh with an additional 980 lines of Go generated by 175 lines of oh.

You can’t perform that action at this time.