-
-
Notifications
You must be signed in to change notification settings - Fork 29
Shells
LeoTM edited this page Dec 11, 2025
·
46 revisions
- (non)login
- (non)interactive
- 1971 Thompson shell
- 1975 PWB (aka Mashey) shell
- 1978 C shell (C)
- .login, .cshrc
- 1979 Bourne
shell (C, macros like ALGOL 68)- .profile
- 1980 COMMAND.COM (x86 assembly)
- 1981 TENEX C shell (C)
- 1983 Korn shell (C)
- .kshrc
- 1988 Hamilton C shell (C)
- 1989 Almquist shell (C)
- 1989 rc Unix shell (Hare) π
- 1989 Bourne Again shell aka Bash π¦ (C) Linux, macOS (old), Windows (WSL, Git for Windows) Bash vs Bourne
- .bash_profile, .bashrc
- 1990 Z shell (C) macOS (new) comparisons
- .zshenv β .zprofile β .zshrc β .zlogin β .zlogout
- frameworks
- Oh My Zsh (Shell) why
- Starship (Rust)
- Antigen (Shell, Perl)
- Prezto
- zplug
- zen
- Antidote (Shell)
- 1993 Command Prompt aka cmd.exe (C, C++) Windows (old)
- 1997 Debian Almquist Shell aka Dash (C)
- 2005 Fish (Rust) π
- 2006 PowerShell (C#, PowerShell) Windows (new) Windows Terminal
- 2019 Nu shell (Rust) β¨
- 2025 ?
create first agentic shelltoo late π - 2025 Flux159/agentic-shell π₯ 1yo
- 2025 mikecvet/nl-sh wrapper π₯ 1yo
- 2025 TODO: create new MAINTAINED agentic shell
- 202? ββ‘π‘
# M2 Pro, Darwin 25, macOS 26
> cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
# ---
> sh --help
GNU bash, version 3.2.57(1)-release-(arm64-apple-darwin25)
# ...
> bash --help
GNU bash, version 3.2.57(1)-release-(arm64-apple-darwin25)
# ...
> ls -i /bin/sh /bin/bash
1152921500312554102 /bin/bash 1152921500312554156 /bin/sh
> file -h /bin/sh /bin/bash
/bin/sh: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/bin/sh (for architecture x86_64): Mach-O 64-bit executable x86_64
/bin/sh (for architecture arm64e): Mach-O 64-bit executable arm64e
/bin/bash: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/bin/bash (for architecture x86_64): Mach-O 64-bit executable x86_64
/bin/bash (for architecture arm64e): Mach-O 64-bit executable arm64e
# i.e. same but 2 diff files:
# If Bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well.
# https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html#Invoked-with-name-sh