Shells¶
Each shell represents a command-line interpreter, and is associated with:
a unique shell ID
a human-readable name
an icon (emoji / unicode character)
various metadata in its
info()method
Shell usage¶
Each shell is materialized by a Shell object, from which you can access various metadata:
>>> from extra_platforms import BASH
>>> BASH
Shell(id='bash', name='Bash')
>>> BASH.id
'bash'
>>> BASH.current
False
>>> BASH.info()
{'id': 'bash', 'name': 'Bash', 'icon': '🐚', 'url': 'https://www.gnu.org/software/bash/', 'current': False, 'version': None, 'path': None}
To check if the current environment is running in a specific shell, use the corresponding detection function:
>>> from extra_platforms import is_bash
>>> is_bash()
False
The current shell can be obtained via the current_shell() function:
>>> from extra_platforms import current_shell
>>> current_shell()
Shell(id='unknown_shell', name='Unknown shell')
Recognized shells¶
Icon |
Symbol |
Name |
Detection function |
|---|---|---|---|
🪶 |
Almquist Shell |
||
# |
Bash |
||
▶ |
Command Prompt |
||
𝐂 |
C shell |
||
💨 |
Dash |
||
🐟 |
Fish |
||
𝐊 |
Korn shell |
||
𝜈 |
Nushell |
||
🔷 |
PowerShell |
||
𝐓 |
tcsh |
||
🐍 |
Xonsh |
||
ℤ |
Zsh |
Hint
The UNKNOWN_SHELL trait represents an unrecognized
shell. It is not included in the ALL_SHELLS group,
and will be returned by current_shell() if the current
shell is not recognized.
Groups of shells¶
Icon |
Symbol |
Description |
||
|---|---|---|---|---|
🐚 |
All shells |
|||
💲 |
Bourne-compatible shells |
⬥ |
||
🅲 |
C shells |
⬥ |
||
◇ |
Other shells |
⬥ |
||
⌨️ |
Windows shells |
⬥ |
Hint
Canonical groups are non-overlapping groups that together cover all recognized traits. They are marked with a ⬥ icon in the table above.
Other groups are provided for convenience, but overlap with each other or with canonical groups.
---
config:
sankey:
height: 800
showValues: false
width: 800
---
sankey-beta
ALL_SHELLS,BOURNE_SHELLS,5
ALL_SHELLS,OTHER_SHELLS,3
ALL_SHELLS,WINDOWS_SHELLS,2
ALL_SHELLS,C_SHELLS,2
BOURNE_SHELLS,ASH,1
BOURNE_SHELLS,BASH,1
BOURNE_SHELLS,DASH,1
BOURNE_SHELLS,KSH,1
BOURNE_SHELLS,ZSH,1
OTHER_SHELLS,FISH,1
OTHER_SHELLS,NUSHELL,1
OTHER_SHELLS,XONSH,1
WINDOWS_SHELLS,CMD,1
WINDOWS_SHELLS,POWERSHELL,1
C_SHELLS,CSH,1
C_SHELLS,TCSH,1
---
config:
mindmap:
padding: 5
---
mindmap
((🐚 ALL_SHELLS))
)⌨️ WINDOWS_SHELLS(
(▶ CMD)
(🔷 POWERSHELL)
)◇ OTHER_SHELLS(
(🐟 FISH)
(𝜈 NUSHELL)
(🐍 XONSH)
)🅲 C_SHELLS(
(𝐂 CSH)
(𝐓 TCSH)
)💲 BOURNE_SHELLS(
(🪶 ASH)
(# BASH)
(💨 DASH)
(𝐊 KSH)
(ℤ ZSH)
Predefined shells¶
Shell definitions and metadata.
- extra_platforms.ASH = Shell(id='ash', name='Almquist Shell')¶
ID:
ashAliases: -
Name: Almquist Shell
Icon: 🪶
Reference: <https://en.wikipedia.org/wiki/Almquist_shell>_
Detection function:
is_ash()Pytest decorators:
@skip_ash/@unless_ashGroups (3):
ALL_SHELLS,ALL_TRAITS,BOURNE_SHELLS⬥
- extra_platforms.BASH = Shell(id='bash', name='Bash')¶
ID:
bashAliases: -
Name: Bash
Icon: #
Reference: <https://www.gnu.org/software/bash/>_
Detection function:
is_bash()Pytest decorators:
@skip_bash/@unless_bashGroups (3):
ALL_SHELLS,ALL_TRAITS,BOURNE_SHELLS⬥
- extra_platforms.CMD = Shell(id='cmd', name='Command Prompt')¶
ID:
cmdAliases: -
Name: Command Prompt
Icon: ▶
Reference: <https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd>_
Detection function:
is_cmd()Pytest decorators:
@skip_cmd/@unless_cmdGroups (3):
ALL_SHELLS,ALL_TRAITS,WINDOWS_SHELLS⬥
- extra_platforms.CSH = Shell(id='csh', name='C shell')¶
ID:
cshAliases: -
Name: C shell
Icon: 𝐂
Reference: <https://en.wikipedia.org/wiki/C_shell>_
Detection function:
is_csh()Pytest decorators:
@skip_csh/@unless_cshGroups (3):
ALL_SHELLS,ALL_TRAITS,C_SHELLS⬥
- extra_platforms.DASH = Shell(id='dash', name='Dash')¶
ID:
dashAliases: -
Name: Dash
Icon: 💨
Reference: <https://en.wikipedia.org/wiki/Almquist_shell#dash>_
Detection function:
is_dash()Pytest decorators:
@skip_dash/@unless_dashGroups (3):
ALL_SHELLS,ALL_TRAITS,BOURNE_SHELLS⬥
- extra_platforms.FISH = Shell(id='fish', name='Fish')¶
ID:
fishAliases: -
Name: Fish
Icon: 🐟
Reference: <https://fishshell.com>_
Detection function:
is_fish()Pytest decorators:
@skip_fish/@unless_fishGroups (3):
ALL_SHELLS,ALL_TRAITS,OTHER_SHELLS⬥
- extra_platforms.KSH = Shell(id='ksh', name='Korn shell')¶
ID:
kshAliases: -
Name: Korn shell
Icon: 𝐊
Reference: <https://en.wikipedia.org/wiki/KornShell>_
Detection function:
is_ksh()Pytest decorators:
@skip_ksh/@unless_kshGroups (3):
ALL_SHELLS,ALL_TRAITS,BOURNE_SHELLS⬥
- extra_platforms.NUSHELL = Shell(id='nushell', name='Nushell')¶
ID:
nushellAliases: -
Name: Nushell
Icon: 𝜈
Reference: <https://www.nushell.sh>_
Detection function:
is_nushell()Pytest decorators:
@skip_nushell/@unless_nushellGroups (3):
ALL_SHELLS,ALL_TRAITS,OTHER_SHELLS⬥
- extra_platforms.POWERSHELL = Shell(id='powershell', name='PowerShell')¶
ID:
powershellAliases: -
Name: PowerShell
Icon: 🔷
Reference: <https://learn.microsoft.com/en-us/powershell/>_
Detection function:
is_powershell()Pytest decorators:
@skip_powershell/@unless_powershellGroups (3):
ALL_SHELLS,ALL_TRAITS,WINDOWS_SHELLS⬥
- extra_platforms.TCSH = Shell(id='tcsh', name='tcsh')¶
ID:
tcshAliases: -
Name: tcsh
Icon: 𝐓
Reference: <https://www.tcsh.org>_
Detection function:
is_tcsh()Pytest decorators:
@skip_tcsh/@unless_tcshGroups (3):
ALL_SHELLS,ALL_TRAITS,C_SHELLS⬥
- extra_platforms.UNKNOWN_SHELL = Shell(id='unknown_shell', name='Unknown shell')¶
ID:
unknown_shellAliases: -
Name: Unknown shell
Icon: ❓
Reference: <https://en.wikipedia.org/wiki/Shell_(computing)>_
Detection function:
is_unknown_shell()Pytest decorators:
@skip_unknown_shell/@unless_unknown_shellGroups (2):
ALL_TRAITS,UNKNOWN⬥
- extra_platforms.XONSH = Shell(id='xonsh', name='Xonsh')¶
ID:
xonshAliases: -
Name: Xonsh
Icon: 🐍
Reference: <https://xon.sh>_
Detection function:
is_xonsh()Pytest decorators:
@skip_xonsh/@unless_xonshGroups (3):
ALL_SHELLS,ALL_TRAITS,OTHER_SHELLS⬥
- extra_platforms.ZSH = Shell(id='zsh', name='Zsh')¶
ID:
zshAliases: -
Name: Zsh
Icon: ℤ
Reference: <https://www.zsh.org>_
Detection function:
is_zsh()Pytest decorators:
@skip_zsh/@unless_zshGroups (3):
ALL_SHELLS,ALL_TRAITS,BOURNE_SHELLS⬥