{"id":34619028,"url":"https://github.com/ivanbgd/ilsh","last_synced_at":"2026-06-17T21:02:03.792Z","repository":{"id":296286948,"uuid":"992897857","full_name":"ivanbgd/ilsh","owner":"ivanbgd","description":"`ilsh` - A POSIX-Compliant Shell (CLI) Implementation in Rust","archived":false,"fork":false,"pushed_at":"2025-12-18T17:29:23.000Z","size":158,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T03:33:14.421Z","etag":null,"topics":["finite-state-machine","fsm","ilsh","parser","posix","posix-compliant","posix-sh","posix-shell","rust","rust-lang","state-machine"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivanbgd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-29T22:15:33.000Z","updated_at":"2026-02-20T13:12:11.000Z","dependencies_parsed_at":"2025-05-29T22:27:15.846Z","dependency_job_id":"6206dbe5-58fb-44ac-94d0-88e4727102ac","html_url":"https://github.com/ivanbgd/ilsh","commit_stats":null,"previous_names":["ivanbgd/posix-shell-rust","ivanbgd/ilsh"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ivanbgd/ilsh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanbgd%2Filsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanbgd%2Filsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanbgd%2Filsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanbgd%2Filsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivanbgd","download_url":"https://codeload.github.com/ivanbgd/ilsh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanbgd%2Filsh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33549782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finite-state-machine","fsm","ilsh","parser","posix","posix-compliant","posix-sh","posix-shell","rust","rust-lang","state-machine"],"created_at":"2025-12-24T14:58:17.880Z","updated_at":"2026-05-27T03:33:29.641Z","avatar_url":"https://github.com/ivanbgd.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `ilsh` - A POSIX-Compliant Shell (CLI) Implementation in Rust\n\n[![license](https://img.shields.io/badge/License-MIT-blue.svg?style=flat)](LICENSE)\n[![Crates.io](https://img.shields.io/crates/v/ilsh.svg)](https://crates.io/crates/ilsh)\n[![docs.rs](https://docs.rs/ilsh/badge.svg)](https://docs.rs/ilsh/)\n[![CI](https://github.com/ivanbgd/ilsh/actions/workflows/ci.yml/badge.svg)](https://github.com/ivanbgd/ilsh/actions/workflows/ci.yml)\n[![Security audit](https://github.com/ivanbgd/ilsh/actions/workflows/audit.yml/badge.svg)](https://github.com/ivanbgd/ilsh/actions/workflows/audit.yml)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n\n# Supported Builtin Commands\n\n- [cd](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html) - change the working directory\n- [echo [string...]](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html) - write arguments to standard\n  output\n- [exit [n]](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#exit) - cause the shell to exit\n- [pwd](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pwd.html) - return working directory name\n- [type [type name...]](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/type.html) - write a description of\n  command type\n\n# Notes\n\n- Mostly [bash](https://www.gnu.org/software/bash/) is used as a reference, but not everything is in accordance\n  with `bash`.\n- Supports running external programs with arguments.\n    - External programs are located using the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment\n      variable.\n- Supports [single quotes](https://www.gnu.org/software/bash/manual/bash.html#Single-Quotes).\n- Supports [double quotes](https://www.gnu.org/software/bash/manual/bash.html#Double-Quotes).\n- Supports [escape character](https://www.gnu.org/software/bash/manual/bash.html#Escape-Character) outside quotes.\n- Supports [redirecting output](https://www.gnu.org/software/bash/manual/bash.html#Redirecting-Output).\n- Supports\n  [appending redirected output](https://www.gnu.org/software/bash/manual/bash.html#Appending-Redirected-Output).\n- Supports shell-specific `\u0026\u003eword` and shell-specific `\u003e\u0026word`, which redirect both `stdout` and `stderr` to the file\n  whose name is the expansion of `word`.\n- Supports multiple redirections.\n\n# Security\n\n- [cargo audit](https://github.com/rustsec/rustsec/blob/main/cargo-audit/README.md) is supported,\n  as well as its GitHub action, [audit-check](https://github.com/rustsec/audit-check).\n- [cargo deny](https://embarkstudios.github.io/cargo-deny/) is supported,\n  as well as its GitHub action, [cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action).\n\n# Development\n\n## Pre-commit\n\n[pre-commit](https://pre-commit.com/) hooks are supported.\n\n```shell\n$ pip install pre-commit  # If you don't already have pre-commit installed on your machine. Run once.\n$ pre-commit autoupdate  # Update hook repositories to the latest versions.\n$ pre-commit install  # Sets up the pre-commit git hook script for the repository. Run once.\n$ pre-commit install --hook-type pre-push  # Sets up the pre-push git hook script for the repository. Run once.\n$ pre-commit run  # For manual running; considers only modified files.\n$ pre-commit run --all-files  # For manual running; considers all files.\n```\n\nAfter installing it, the provided [pre-commit hook(s)](.pre-commit-config.yaml) will run automatically on `git commit`.\n\n# Running the Program\n\n```shell\ncargo run --release\n```\n\n```shell\nexport DEBUG=false\ncargo run --release\n```\n\nA run script is provided.\n\nThe run script can set the `DEBUG` environment variable to `false` or `true`.\n\n```shell\n./run.sh\n```\n\n# Building and Running the Program with Debug Output\n\nThe program supports debugging output, which can be enabled by setting\nthe environment variable `DEBUG` to the value `true`.\n\nIt can be set outside the program, in the user shell, or inside the `run.sh` shell script.\n\nThis is only considered during **compile time**, and **not** during run time.\n\n```shell\nDEBUG=true ./run.sh\n```\n\n```shell\nexport DEBUG=true\n./run.sh\n```\n\n# Testing\n\n- Unit-test with `cargo test`.\n- End-to-end-test with `./test.sh`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanbgd%2Filsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanbgd%2Filsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanbgd%2Filsh/lists"}