A Unix system is composed of different pieces put together to form a whole. Unix is a complete system consisting of:
a kernel that manages:
- the hardware (device drivers)
- the memory
- a file system loaded with inputs / outputs
a development environment
an associated documentation
Unix is essentially multi-task: at a given moment, several tasks can run logically in parallel.
It is also multi-user: to be able to work on a UNIX system, a user must register (through a connection) and several users can work at the same time (through sessions).
Task management is performed according to a time-sharing model: each task receives, in turn, a small amount of time during which it can work.
The inputs / outputs are commonplace: writing on a file, on a device, on a network, etc. is always done in the same way.
Differences are handled at the lowest kernel level. This allows a maximum simplification of the writing of the software.
Unix also provides an interface for the user in the form of a shell: a command interpreter.
There are a lot of them:
ash, and so on.
A program written in shell is interpreted: each line of the program is analyzed and immediately executed.
A shell program is interpreted interactively or in detached mode: either the user's commands are typed directly on the keyboard and executed; or the commands are previously written to a file that is executed.