oh

A surprisingly powerful Unix shell

Github stars Tracking Chart

A surprisingly powerful Unix shell

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.

Overview

Name With Ownermichaelmacinnis/oh
Primary LanguageGo
Program languageGo (Language Count: 1)
Platform
License:MIT License
Release Count6
Last Release Namev0.8.3 (Posted on )
First Release Namev0.4.8.16 (Posted on 2019-02-13 10:36:22)
Created At2011-05-17 14:21:33
Pushed At2023-09-19 17:46:30
Last Commit At
Stargazers Count1.3k
Watchers Count40
Fork Count55
Commits Count1k
Has Issues Enabled
Issues Count46
Issue Open Count3
Pull Requests Count1
Pull Requests Open Count1
Pull Requests Close Count5
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top