github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/README.md (about)

     1  # Elvish: Expressive Programming Language + Versatile Interactive Shell
     2  
     3  [![CI status](https://github.com/elves/elvish/workflows/CI/badge.svg)](https://github.com/elves/elvish/actions?query=workflow%3ACI)
     4  [![FreeBSD & gccgo test status](https://img.shields.io/cirrus/github/elves/elvish?logo=Cirrus%20CI&label=CI2)](https://cirrus-ci.com/github/elves/elvish/master)
     5  [![Test Coverage](https://img.shields.io/codecov/c/github/elves/elvish/master.svg?logo=Codecov&label=coverage)](https://app.codecov.io/gh/elves/elvish/branch/master)
     6  [![Go Reference](https://pkg.go.dev/badge/github.com/markusbkk/elvish@master.svg)](https://pkg.go.dev/github.com/markusbkk/elvish@master)
     7  [![Packaging status](https://repology.org/badge/tiny-repos/elvish.svg)](https://repology.org/project/elvish/versions)
     8  [![Twitter](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/ElvishShell)
     9  
    10  Elvish is an expressive programming language and a versatile interactive shell,
    11  combined into one seamless package. It runs on Linux, BSDs, macOS and Windows.
    12  
    13  Despite its pre-1.0 status, it is already suitable for most daily interactive
    14  use.
    15  
    16  **Visit the official website https://elv.sh for prebuilt binaries, blog posts,
    17  documentation and other resources.**
    18  
    19  User groups (all connected thanks to [Matrix](https://matrix.org)):
    20  [![Gitter](https://img.shields.io/badge/gitter-elves/elvish-blue.svg?logo=gitter-white)](https://gitter.im/elves/elvish)
    21  [![Telegram Group](https://img.shields.io/badge/telegram-@elvish-blue.svg)](https://telegram.me/elvish)
    22  [![#elvish on libera.chat](https://img.shields.io/badge/libera.chat-%23elvish-blue.svg)](https://web.libera.chat/#elvish)
    23  [![#users:elves.sh](https://img.shields.io/badge/matrix-%23users:elv.sh-blue.svg)](https://matrix.to/#/#users:elves.sh)
    24  
    25  ## Building Elvish
    26  
    27  Most users do not need to build Elvish from source. Prebuilt binaries for the
    28  latest commit are provided for
    29  [Linux amd64](https://dl.elv.sh/linux-amd64/elvish-HEAD.tar.gz),
    30  [macOS amd64](https://dl.elv.sh/darwin-amd64/elvish-HEAD.tar.gz),
    31  [Windows amd64](https://dl.elv.sh/windows-amd64/elvish-HEAD.zip) and
    32  [many other platforms](https://elv.sh/get).
    33  
    34  To build Elvish from source, you need
    35  
    36  -   A supported OS: Linux, {Free,Net,Open}BSD, macOS, or Windows 10.
    37  
    38      **NOTE**: Windows 10 support is experimental.
    39  
    40  -   Go >= 1.16.
    41  
    42  To build Elvish from source, follow these steps:
    43  
    44  ```sh
    45  # 1. Start from any directory you want to store Elvish's source code
    46  # 2. Clone the Git repository
    47  git clone https://github.com/elves/elvish
    48  # 3. Change into the repository
    49  cd elvish
    50  # 4. Build and install Elvish
    51  make get
    52  ```
    53  
    54  This will install Elvish to `~/go/bin` (or `$GOPATH/bin` if you have set
    55  `$GOPATH`). You might want to add the directory to your `PATH`.
    56  
    57  To install it elsewhere, override `ELVISH_MAKE_BIN` in the `make` command:
    58  
    59  ```sh
    60  make get ELVISH_MAKE_BIN=./elvish # Install to the repo root
    61  make get ELVISH_MAKE_BIN=/usr/local/bin/elvish # Install to /usr/local/bin
    62  ```
    63  
    64  ### Experimental plugin support
    65  
    66  Elvish has experimental support for building and importing plugins, modules
    67  written in Go.
    68  
    69  However, since plugin support relies on dynamic linking, it is not enabled in
    70  the official prebuilt binaries. You need to build Elvish from source, with
    71  `ELVISH_PLUGIN_SUPPORT=1`:
    72  
    73  ```sh
    74  make get ELVISH_PLUGIN_SUPPORT=1
    75  ```
    76  
    77  To build a plugin, see this [example](https://github.com/elves/sample-plugin).
    78  
    79  ## Packaging Elvish
    80  
    81  See [PACKAGING.md](PACKAGING.md) for notes for packagers.
    82  
    83  ## Contributing to Elvish
    84  
    85  See [CONTRIBUTING.md](CONTRIBUTING.md) for notes for contributors.