Powerful scripting language & versatile interactive shell add sylixos support.
Go to file
2022-06-17 16:50:38 +01:00
.github/workflows Re-enable staticcheck, and fix issues it found. 2022-05-22 11:57:38 +01:00
.vscode Add VS Code extension. 2022-06-05 12:19:18 +01:00
cmd Revamp flag handling in pkg/prog. 2022-02-05 14:52:29 +00:00
pkg pkg/eval/vals: Replace MakeListFromStrings with a generic MakeListSlice. 2022-06-17 16:50:38 +01:00
syntaxes Symlink vscode/elvish.tmLanguage.json -> syntaxes/elvish.tmLanguage.json. 2022-06-13 23:45:20 +01:00
tools Add tools/pre-push, intended to be used as a Git hook. 2022-06-05 12:44:54 +01:00
vscode vscode: Fix syntax highlighting; bump to 0.1.1. 2022-06-12 01:23:59 +01:00
website Correctly encode strings with invalid UTF-8 2022-06-11 20:42:06 +01:00
.cirrus.yml Simplify FreeBSD CI setup. 2022-03-20 17:22:41 +00:00
.codecov.yml Update .codecov.yml with file rename. 2021-12-17 01:07:20 +00:00
.codespellrc Add VS Code extension. 2022-06-05 12:19:18 +01:00
.dockerignore Update .dockerignore. 2018-10-16 10:19:20 +01:00
.gitattributes Use .gitattributes to filter go sources through goimports 2014-02-10 12:41:16 +08:00
.gitignore Add VS Code extension. 2022-06-05 12:19:18 +01:00
.gitlab-ci.yml Add "apk add git" to GitLab CI. 2022-03-18 10:59:57 +00:00
.prettierrc Put flags for prettier in .prettierrc. 2021-12-28 12:54:30 +00:00
0.19.0-release-notes.md Document fix of #1448 in 0.19.0 release notes. 2022-06-05 22:39:48 +01:00
CONTRIBUTING.md Re-enable staticcheck, and fix issues it found. 2022-05-22 11:57:38 +01:00
Dockerfile Require Go 1.18. 2022-03-20 15:28:23 +00:00
go.mod Require Go 1.18. 2022-03-20 15:28:23 +00:00
go.sum Use go-cmp to report unexpected test results. 2022-03-11 22:49:32 +00:00
LICENSE Project rename: das -> elvish 2014-01-29 18:44:07 +08:00
Makefile pkg/buildinfo: Use Go's buildinfo to derive version of development builds. 2022-04-02 18:18:24 +01:00
PACKAGING.md PACKAGING.md: Fix language tags of code fences. 2022-04-09 21:30:09 +01:00
README.md README: Fix Matrix link 2022-05-22 20:42:49 +01:00
SECURITY.md Add a security policy doc. 2021-09-22 00:24:03 +01:00

Elvish: Expressive Programming Language + Versatile Interactive Shell

CI status FreeBSD & gccgo test status Test Coverage Go Reference Packaging status Twitter

Elvish is an expressive programming language and a versatile interactive shell, combined into one seamless package. It runs on Linux, BSDs, macOS and Windows.

Despite its pre-1.0 status, it is already suitable for most daily interactive use.

User groups (all connected thanks to Matrix): Gitter Telegram Group #users:elv.sh

Documentation

Documentation for Elvish lives on the official website https://elv.sh, including:

The source for the documentation is in the website directory.

Building Elvish

Most users do not need to build Elvish from source. Prebuilt binaries for the latest commit are provided for Linux amd64, macOS amd64, macOS arm64, Windows amd64 and many other platforms.

To build Elvish from source, you need

  • A supported OS: Linux, {Free,Net,Open}BSD, macOS, or Windows 10.

    NOTE: Windows 10 support is experimental.

  • Go >= 1.18.

To build Elvish from source, follow these steps:

# 1. Start from any directory you want to store Elvish's source code
# 2. Clone the Git repository
git clone https://github.com/elves/elvish
# 3. Change into the repository
cd elvish
# 4. Build and install Elvish
make get

This will install Elvish to $GOBIN, which defaults to $GOPATH/bin or ~/go/bin if $GOPATH is not set.

To install it elsewhere, override ELVISH_MAKE_BIN in the make command:

make get ELVISH_MAKE_BIN=./elvish # Install to the repo root
make get ELVISH_MAKE_BIN=/usr/local/bin/elvish # Install to /usr/local/bin

Experimental plugin support

Elvish has experimental support for building and importing plugins, modules written in Go.

However, since plugin support relies on dynamic linking, it is not enabled in the official prebuilt binaries. You need to build Elvish from source, and make sure that CGo is enabled:

make get CGO_ENABLED=1

To build a plugin, see this example.

Packaging Elvish

See PACKAGING.md for notes for packagers.

Contributing to Elvish

See CONTRIBUTING.md for notes for contributors.