A cross-platform POSIX-style shell written in Python.
Project description
py-posix-shell
py-posix-shell is a cross-platform POSIX-style shell implemented in pure
Python. The long-term goal is to become a practical dash-like shell that can
run on Windows, Linux, and macOS from the same Python package.
It is still young, but it now supports the pieces needed by many ordinary shell scripts:
- command lists with
;,&&,||, background&, and! - pipelines with
| if/elif/else/fifor,while, anduntilloops withbreakandcontinuecase/esac- POSIX-style functions with
return - grouping with
{ ...; }and subshells with( ... ) - quoting with single quotes, double quotes, and backslash escapes
- parameter expansion such as
$HOME,$?,${name:-word},${name:=word},${#name},${name#pattern},${name##pattern},${name%pattern}, and${name%%pattern} - arithmetic expansion with
$(( expression )) - command substitution with
$(...)and backticks - field splitting, pathname expansion, tilde expansion, and
set -f - here-documents with
<<and<<- - redirection with
<,>,>>,<>,2>,2>>,>&, and<& - shell variables, exported environment variables, and positional parameters
- common builtins including
.,:,alias,unalias,cd,pwd,eval,exec,exit,export,readonly,unset,set,shift,getopts,echo,printf,read,type,command,env,test,[,trap,umask,times, andhash - internal POSIX/GNU-style utility fallbacks for hosts such as Windows where
commands may be missing. The shell prefers a native command when it exists and
otherwise falls back to Python implementations of common tools including
ls,cat,cp,mv,rm,install,unlink,mkdir,rmdir,pwd,sort,uniq,wc,cut,head,tail,chmod,chown,chgrp,echo,date,sleep,printf,basename,dirname,whoami,yes,find,xargs,locate,updatedb,diff,cmp,diff3,sdiff,grep,egrep,fgrep,sed,awk,gawk, andtar
The implementation intentionally remains dependency-free at runtime. It aims for
useful POSIX behavior first, then progressively tighter compatibility with
dash.
Known gaps include job control, full signal semantics, complete interactive line
editing, and exact set -e edge cases.
Installation
From PyPI:
pip install py-posix-shell
From this repository:
pip install .
For editable development:
pip install -e ".[dev]"
Usage
Start an interactive shell:
pysh
Run one command:
pysh -c "name=world; echo \"hello $name\""
Run a script:
pysh ./script.sh arg1 arg2
The package also installs the longer py-posix-shell command.
Development
Run the tests with:
pytest
Build the package with:
poetry build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_posix_shell-0.4.0.tar.gz.
File metadata
- Download URL: py_posix_shell-0.4.0.tar.gz
- Upload date:
- Size: 41.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
140e814da50ddae4153a46d65e062181e15c86cfb451903366dd215eb99bd6d7
|
|
| MD5 |
83ac7aaeee76faaf3b748aa3fe37a789
|
|
| BLAKE2b-256 |
2c73378bf979f47d674cfa1dd1dee257c65b67c7a3e3243ebaab94b6ac6d94ee
|
File details
Details for the file py_posix_shell-0.4.0-py3-none-any.whl.
File metadata
- Download URL: py_posix_shell-0.4.0-py3-none-any.whl
- Upload date:
- Size: 42.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb04c8fd5bb7923c9bfbb7a46fc1556bf3f9667ec17117647feba4cea82955c5
|
|
| MD5 |
e1c7199568ecd4e2418270afac3961fd
|
|
| BLAKE2b-256 |
1be14ba46b0387aa6852e2141932e843796fe793f404d3c25e53a4c619536d18
|