A feature-rich, POSIX-compatible shell implemented in Python with advanced scripting capabilities.
Cross-platform and extensible, PyShell brings the power of Unix-style scripting to Python environments.
- POSIX Compatibility: Standard shell syntax (
if,while,for,case) - Advanced Arrays: Indexed and associative arrays
- Pipeline Support: Full pipe, redirection, and background job control
- Function Definitions: Shell functions with local variables
- Parameter Expansion:
${var:-default},${var#pattern}, etc. - Command Substitution:
$(command)and backtick syntax - Arithmetic Expansion:
$((expression))with full math operations - Brace Expansion:
{1..10},{a,b,c} - Glob Patterns:
*,?,[...]with extended matching - Built-in Commands: 50+ built-ins (
cd,echo,export,test,local, etc.) - Job Control: Background jobs with
fg/bg - History & Completion: Command history with readline integration
- Aliases: Command aliasing support
- Cross-Platform: Works on Linux, macOS, and Windows
<<<<<<< HEAD
git clone https://github.com/yogvidwankhede/PyShell.git
cd pyshell
pip install -e .=======
pip install pyshell-terminalgit clone https://github.com/yogvidwankhede/PyShell.git
cd PyShell
pip install -e .python main.pypython main.py -c "echo Hello World"python main.py script.sh# Simple variables
name="PyShell"
echo $name
# Arrays
arr=(one two three)
echo ${arr[0]}
echo ${arr[@]}
# Associative arrays
declare -A config
config[host]="localhost"
config[port]=8080
echo ${config[host]}# If statements
if [ -f "file.txt" ]; then
echo "File exists"
else
echo "File not found"
fi
# Loops
for i in {1..5}; do
echo "Count: $i"
done
# While loops
count=0
while [ $count -lt 5 ]; do
echo $count
count=$((count + 1))
donegreet() {
local name=$1
echo "Hello, $name!"
}
greet "World"# Pipes
cat file.txt | grep "pattern" | wc -l
# Redirection
echo "data" > output.txt
cat input.txt >> output.txt
command 2> errors.logpyshell/
βββ main.py # Entry point and REPL
βββ pyshell/
β βββ tokenizer.py # Lexical analysis
β βββ parser.py # Syntax analysis
β βββ executor.py # Command execution
β βββ expansions.py # Variable/command expansion
β βββ builtins.py # Built-in commands
β βββ state.py # Global shell state
β βββ ast_nodes.py # AST node definitions
β βββ exceptions.py # Custom exceptions
β βββ utils.py # Utilities
βββ tests/ # Test suite
python tests/run_all_tests.pyContributions are welcome! π
- Fork the repository
- Create a feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m "Add some AmazingFeature" - Push to your branch
git push origin feature/AmazingFeature
- Open a Pull Request
- Tab completion improvements
- More POSIX test operators
- Process substitution
- Co-processes
- Additional shell options
- Performance optimizations
- Inspired by Bash, Zsh, and other Unix shells
- Built using Pythonβs
readlineandsubprocessmodules