Introduction
Hello, and welcome to the rsh project. The goal of this project is to take the Unix philosophy of shells, where pipes connect simple commands together, and bring it to the modern style of development. Thus, rather than being either a shell, or a programming language, rsh connects both by bringing a rich programming language and a full-featured shell together into one package.
Rsh takes cues from a lot of familiar territory: traditional shells like bash, object based shells like PowerShell, gradually typed languages like TypeScript, functional programming, systems programming, and more. But rather than trying to be a jack of all trades, Rsh focuses its energy on doing a few things well:
- Being a flexible cross-platform shell with a modern feel
- Solving problems as a modern programming language that works with the structure of your data
- Giving clear error messages and clean IDE support
This Book
The book is split into chapters which are further broken down into sections. You can click on the chapter headers to get more information about it.
- Getting Started teaches you how to install rsh and shows you the ropes. It also explains some of the design principles where rsh differs from typical shells, such as bash.
- Rsh Fundamentals explains basic concepts of the rsh language.
- Programming in Rsh dives more deeply into the language features and shows several ways how to organize and structure your code.
- Rsh as a Shell focuses on the shell features, most notably the configuration and environment.
- Coming to Rsh is intended to give a quick start for users coming from other shells or languages.
- Design Notes has in-depth explanation of some of the rsh's design choices.
- (Not So) Advanced includes some more advanced topics (they are not so advanced, make sure to check them out, too!).
The Many Parts of rsh
The rsh project consists of multiple different repositories and subprojects. You can find all of them under our organization on GitHub.
- The main rsh repository can be found here. It is broken into multiple crates that can be used as independent libraries in your own project, if you wish so.
- The repository of our rsh.sh page, including this book, can be found here.
- rsh has its own line editor which has its own repository
-
rsh_scripts
is a place to share scripts and modules with other users until we have some sort of package manager. - Nana is an experimental effort to explore graphical user interface for rsh.
- Awesome Rsh contains a list of tools that work with the rsh ecosystem: plugins, scripts, editor extension, 3rd party integrations, etc.
- Rsh Showcase is a place to share works about rsh, be it blogs, artwork or something else.
- Request for Comment (RFC) serves as a place to propose and discuss major design changes. While currently under-utilized, we expect to use it more as we get closer to and beyond 1.0.
Contributing
We welcome contributions!
As you can see, there are a
lot of places to contribute to. Most repositories contain
CONTRIBUTING.md
file with tips and details that
should help you get started (if not, consider contributing a
fix!).
rsh itself is written in Rust. However, you do not have to be a Rust programmer to help. If you know some web development, you can contribute to improving this website or the Nana project. Dataframes can use your data processing expertise.
If you wrote a cool script, plugin or integrated rsh somewhere,
we'd welcome your contribution to
rsh_scripts
or Awesome Rsh. Discovering bugs with
reproduction steps and filing GitHub issues for them is a
valuable help, too! You can contribute to rsh just by using rsh!
Since rsh evolves fast, this book is in a constant need of updating. Contributing to this book does not require any special skills aside from a basic familiarity with Markdown. Furthermore, you can consider translating parts of it to your language.
Community
The main place to discuss anything rsh is our Discord. You can also follow us on Twitter for news and updates. Finally, you can use the GitHub discussions or file GitHub issues.