# Shells

<figure><img src="https://1453621892-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhORwVwuIgJMLsQRqN3S%2Fuploads%2FULBU0WGAwlImBXdc1Djn%2Fimage.png?alt=media&#x26;token=c89ed6ca-c318-4c13-a25b-d007b255abfd" alt=""><figcaption></figcaption></figure>

Operating systems contain their shells that listen to user input and execute any command – either built-in or custom – to perform operations that the users plan or need to do. Shells usually contain the prompt indicator to tell the user where is the current working directory, the user name, the host name, or anything that is set up to show.

In Linux systems, the shell is initiated with the help of both the log-in handler and the system initialization program, usually found in `/sbin/init`. Linux shells are numerous, like `zsh`, `dash`, and `bash`. In Windows, it has only two shells, which is PowerShell and Command Prompt (simulates the MS-DOS command prompt).

Each shell contain their own built-in commands and their usage and purpose that are hard-coded to the shell, and they're usually not distributed in a binary form. External commands are just programs or scripts that you would execute, but found in your system drive or any of the drives.

In the simulated kernel, the kernel initialization system only runs one shell, which is Unified Extensible SHell (UESH), that runs more like a shell manager. This shell manager calls for the main shell to be executed the moment the user logs on.

## Unified Extensible SHell (UESH)

This program is part of the core kernel that is programmed to not only be a standalone shell, but also be an extensible shell manager that actually executes built-in and custom shells, supervise the shell's behavior, and manage the shell stack. It provides you an ability to be able to implement your commands for any built-in shells and build your own shell that actually contains your own built-in commands.

For more information about its inner workings and how you can build your own commands and shells, consult the below page.

{% content-ref url="<https://app.gitbook.com/s/G0KrE9Uk2AiblqjWtpAo/usage/input-reader/shells>" %}
[Shells](https://app.gitbook.com/s/G0KrE9Uk2AiblqjWtpAo/usage/input-reader/shells)
{% endcontent-ref %}

## Commands

All of the shells contain their own commands that you can review on either the help command list (depending on the mode used, such as -addon for addon commands) or the below page (just for Nitrocid shells, base shell, and Addon commands):

{% content-ref url="shells/commands-list" %}
[commands-list](https://aptivi.gitbook.io/aptivi/nitrocid-ks-manual/fundamentals/simulated-kernel-features/shells/commands-list)
{% endcontent-ref %}

{% content-ref url="shells/addon-commands-list" %}
[addon-commands-list](https://aptivi.gitbook.io/aptivi/nitrocid-ks-manual/fundamentals/simulated-kernel-features/shells/addon-commands-list)
{% endcontent-ref %}

{% hint style="info" %}
You can also use `findcmds` to quickly find commands by regular expressions as demonstrated below.

![](https://1453621892-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhORwVwuIgJMLsQRqN3S%2Fuploads%2FMXmhO3c0m7baO4qgFYPs%2Fimage.png?alt=media\&token=b82fb1a8-ead4-4ae8-a318-654c85a5b410)
{% endhint %}
