363b712f66
This commit replaces scopeOp, the only remaining place that mutates *Ns in place, with nsOp, which performs copy-on-write for *Ns. As a result, the "eval" command no longer mutates the passed namespace. The default namespace it uses is also changed to match the default of "-source" (an amalgamated namespace from the local and upvalue scopes), making "-source $file" equivalent to "eval (slurp <$file)", and formally deprecated. Another result is that (*Evaler).Eval can now guard the mutation of the global namespace with the mutex, making it concurrency-safe to execute multiple sources that touch the global namespace. This fixes #1137. |
||
---|---|---|
cmd | ||
pkg | ||
tools | ||
website | ||
.appveyor.yml | ||
.cirrus.yml | ||
.codecov.yml | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
CONTRIBUTING.md | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
Makefile | ||
NEXT-RELEASE.md | ||
README.md |
Elvish: Friendly Interactive Shell and Expressive Programming Language
Elvish is a friendly interactive shell and an expressive programming language. It runs on Linux, BSDs, macOS and Windows. Despite its pre-1.0 status, it is already suitable for most daily interactive use.
Visit the official website https://elv.sh for prebuilt binaries, blog posts, documentation and other resources.
User groups (all connected with matterbridge):
Building Elvish
Most users can just use prebuilt binaries and do not need to build from source.
To build Elvish from source, you need
-
A supported OS: Linux, {Free,Net,Open}BSD, macOS, or Windows.
NOTE: Windows support is experimental, and only Windows 10 is supported.
-
Go >= 1.14.
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 ~/go/bin
.
Alternatively, you can also just use go get
to install Elvish:
go get -u github.com/elves/elvish
This will clone the Git repository to ~/go/src/github.com/elves/elvish
,
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.
Some tips on installation:
-
Remember to add
$HOME/go/bin
to yourPATH
so that you can runelvish
directly. -
If you want to install Elvish to a different place, follow these steps to set
GOPATH
, and Elvish will be installed to$GOPATH/bin
instead.
Contributing to Elvish
See CONTRIBUTING.md for more notes for contributors.