Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/moisam/layla-shell
A GNU/Linux shell implementation
https://github.com/moisam/layla-shell
gnu gnu-linux layla linux linux-shell posix posix-compatible posix-compliant shell unix
Last synced: 2 months ago
JSON representation
A GNU/Linux shell implementation
- Host: GitHub
- URL: https://github.com/moisam/layla-shell
- Owner: moisam
- License: gpl-3.0
- Created: 2019-09-27T12:00:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-29T16:24:52.000Z (6 months ago)
- Last Synced: 2024-07-29T21:42:49.172Z (6 months ago)
- Topics: gnu, gnu-linux, layla, linux, linux-shell, posix, posix-compatible, posix-compliant, shell, unix
- Language: C
- Size: 2.66 MB
- Stars: 12
- Watchers: 4
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
README
#
# Copyright 2019, 2024 (c)
# Mohammed Isam [[email protected]]
#
# file: README
# This file is part of the Layla Shell project.
#
# Layla Shell is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Layla Shell is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Layla Shell. If not, see .
#About:
======Layla shell is a POSIX-compliant GNU/Linux shell. It aims to implement the
full functionality specified in the POSIX Shell & Utilities volume. This
volume describes the Shell Command Language, the general terminal interface,
and the builtin utilities of compliant shells. The full POSIX standard is
freely available from The Open Group's website at:https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/
Layla shell implements most of the POSIX-defined functionality. Specifically,
quoting, token recognition, words expansions, I/O redirection, reponses to
error conditions, the shell command language, the standard shell execution
environment, signal handling, and the general and special builtin utilities
are all implemented and behave in a way that is conforming to the POSIX
standard. Pattern matching and pathname expansion relies on external tools,
and thus might not behave exactly as specified in the POSIX standard. The
shell grammar has been extended to accommodate some of the widely used non-
POSIX words, such as the function and [[ keywords, and the (( )) arithmetic
expansion operator. In all of these situations, if one or more of the major Unix
shells disagreed in some aspect of their behaviour, we opted to follow ksh,
as ksh is the "model" POSIX shell, the one upon which the Shell & Utilities
volume was modeled in the first place. But ksh is not the only shell out
there. This is why we included features from other shells, most notably bash,
the most widely used shell nowadays.To better understand the inner workings of this (as well as any other POSIX-
compliant shell), it would be better if you got a copy of the Linux Shell
Internals book, published by No Starch Press. This shell and the book has been
developed hand-in-hand. The book helps to explain the code of this shell and
provide a walk-through for newcomers. Although the code is extensively
commented, a lot of theoretical ground has covered in the book, not in the
source code. If you really want to understand how and why Unix/Linux shells
behave in the context of POSIX, I honestly advise you to get a copy of the
book.There is still a long way to go with testing, bug-fixing and improving Layla
shell, and your feedback is more than welcome in this regard. If you have a
bug report, or you want to suggest adding some feature or fixing something
with the shell, feel free to email me directly at my email address, the one
you will find in the beginning of this file. If you have any bugfixes, patches
or feature improvements you want to add to the code, feel free to send me your
code at the email address above, or through the Linux Shell Internals
repository at GitHub:https://github.com/moisam/Layla-Shell/
The simplified (and tuned-down) version of Layla shell is available from:
https://github.com/moisam/Linux-Shell-Internals-book/Package dependencies:
=====================Layla shell has very few external dependencies, in order to ease the process
of compiling and installing it. You only need to have the GNU C library
installed, in addition to the GNU Compiler Collection (GCC) or the Clang/LLVM
compiler.If you are using any GNU/Linux distro, it would be better if you checked your
distro's official repositories, as these tools are installed by default on
most systems. If, by a sore chance, you needed to manually download and
install them, here are the links:- GNU C Library: https://www.gnu.org/software/libc/
- GCC: https://gcc.gnu.org/
- LLVM: http://releases.llvm.org/download.htmlHow to compile and install
==========================If you downloaded the shell as a source tarball, navigate to the directory
where you downloaded the tarball:$ cd ~/Downloads
then extract the archive and enter the extracted directory:
$ tar xvf lsh-1.0
$ cd lsh-1.0/then run:
$ make && su -c "make install"
and that's it! Now you can run the shell by invoking:
$ lsh
Help
====For more information, please read the manpage and info page in the docs/
directory.Thanks!