2021-01-29 10:42:07 +08:00
# Elvish: Expressive Programming Language + Versatile Interactive Shell
2013-06-16 16:45:22 +08:00
2021-02-11 07:50:21 +08:00
![CI status ](https://github.com/elves/elvish/workflows/CI/badge.svg )
[![FreeBSD test status ](https://img.shields.io/cirrus/github/elves/elvish?logo=Cirrus%20CI&label=freebsd&task=Test%20on%20FreeBSD )](https://cirrus-ci.com/github/elves/elvish/master)
[![gccgo test status ](https://img.shields.io/cirrus/github/elves/elvish?logo=Cirrus%20CI&label=gccgo&task=Test%20on%20gccgo )](https://cirrus-ci.com/github/elves/elvish/master)
2020-04-04 07:19:36 +08:00
[![Test Coverage ](https://img.shields.io/codecov/c/github/elves/elvish.svg?logo=Codecov&label=coverage )](https://codecov.io/gh/elves/elvish)
2021-01-27 09:28:38 +08:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/elves/elvish )](https://goreportcard.com/report/src.elv.sh)
2018-10-10 17:45:06 +08:00
[![GoDoc ](https://img.shields.io/badge/godoc-api-blue.svg )](https://godoc.elv.sh)
2021-01-28 07:54:14 +08:00
[![Twitter ](https://img.shields.io/twitter/url/http/shields.io.svg?style=social )](https://twitter.com/ElvishShell)
2017-07-07 08:08:41 +08:00
2021-01-29 10:42:07 +08:00
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.
2018-10-10 17:45:06 +08:00
2020-04-03 08:30:21 +08:00
**Visit the official website https://elv.sh for prebuilt binaries, blog posts,
documentation and other resources.**
2018-10-10 17:45:06 +08:00
2020-03-26 09:29:19 +08:00
User groups (all connected with
2019-12-26 23:48:14 +08:00
[matterbridge ](https://github.com/42wim/matterbridge/ )):
2018-10-10 17:45:06 +08:00
[![Gitter ](https://img.shields.io/badge/gitter-elves/elvish-blue.svg?logo=gitter-white )](https://gitter.im/elves/elvish)
[![Telegram Group ](https://img.shields.io/badge/telegram-@elvish-blue.svg )](https://telegram.me/elvish)
[![#elvish on freenode ](https://img.shields.io/badge/freenode-%23elvish-blue.svg )](https://webchat.freenode.net/?channels=elvish)
2020-03-20 19:23:48 +08:00
[![#elvish:matrix.org ](https://img.shields.io/badge/matrix-%23elvish:matrix.org-blue.svg )](https://matrix.to/#/#elvish:matrix.org)
2018-10-10 00:45:37 +08:00
2018-10-22 03:44:01 +08:00
## Building Elvish
2020-04-03 08:30:21 +08:00
Most users can just use [prebuilt binaries ](https://elv.sh/get/ ) and do not need
to build from source.
2020-03-26 09:29:19 +08:00
2020-01-14 22:49:32 +08:00
To build Elvish from source, you need
2018-10-22 03:44:01 +08:00
2020-01-14 22:49:32 +08:00
- A supported OS: Linux, {Free,Net,Open}BSD, macOS, or Windows.
2018-10-22 03:44:01 +08:00
2020-03-09 07:57:51 +08:00
**NOTE** : Windows support is experimental, and only Windows 10 is supported.
2018-10-22 03:44:01 +08:00
2020-08-14 05:41:57 +08:00
- Go >= 1.14.
2018-10-22 03:44:01 +08:00
2020-01-14 22:49:32 +08:00
To build Elvish from source, follow these steps:
2018-10-22 03:44:01 +08:00
```sh
2020-01-14 22:49:32 +08:00
# 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
2018-10-22 03:44:01 +08:00
```
2020-01-14 22:49:32 +08:00
This will install Elvish to `~/go/bin` .
Alternatively, you can also just use `go get` to install Elvish:
2018-10-22 03:44:01 +08:00
```sh
2021-01-27 09:35:01 +08:00
go get -u src.elv.sh/cmd/elvish
2018-10-22 03:44:01 +08:00
```
2021-01-27 09:28:38 +08:00
This will clone the Git repository to `~/go/src/src.elv.sh` , updating it if
already exists, and install Elvish to `~/go/bin` . However, Elvish built this way
will lack version information, although it is otherwise fully functional.
2020-01-14 22:49:32 +08:00
Some tips on installation:
- Remember to add `$HOME/go/bin` to your `PATH` so that you can run `elvish`
directly.
- If you want to install Elvish to a different place, follow
[these steps ](https://github.com/golang/go/wiki/SettingGOPATH ) to set
`GOPATH` , and Elvish will be installed to `$GOPATH/bin` instead.
## Contributing to Elvish
2018-10-22 03:44:01 +08:00
2020-01-14 23:12:12 +08:00
See [CONTRIBUTING.md ](CONTRIBUTING.md ) for more notes for contributors.