They are part of the environment in which a process runs. For example, a running process can query the value of the TEMP environment variable to discover a suitable location to store temporary files, or the HOME or USERPROFILE variable to find the directory structure owned by the user running the process.

They were introduced in their modern form in 1979 with Version 7 Unix, so are included in all Unixoperating system flavors and variants from that point onward including Linux and macOS. From PC DOS 2.0 in 1982, all succeeding Microsoft operating systems including Microsoft Windows, and OS/2 also have included them as a feature, although with somewhat different syntax, usage and standard variable names.

In all Unix and Unix-like systems, each process has its own separate set of environment variables. By default, when a process is created, it inherits a duplicate environment of its parent process, except for explicit changes made by the parent when it creates the child. At the API level, these changes must be done between running fork and exec. Alternatively, from command shells such as bash, a user can change environment variables for a particular command invocation by indirectly invoking it via env or using the ENVIRONMENT_VARIABLE=VALUE <command> notation. A running program can access the values of environment variables for configuration purposes.

Shell scripts and batch files use environment variables to communicate data and preferences to child processes. They can also be used to store temporary values for reference later in a shell script. However, in Unix, other variables are usually used for this.

In Unix, an environment variable that is changed in a script or compiled program will only affect that process and possibly child processes. The parent process and any unrelated processes will not be affected. In MS-DOS, changing or removing a variable's value inside a batch file will change the variable for the duration of COMMAND.COM's existence.

In Unix, the environment variables are normally initialized during system startup by the system init scripts, and hence inherited by all other processes in the system. Users can, and often do, augment them in the profile script for the command shell they are using. In Microsoft Windows, each environment variable's default value is stored in the Windows registry or set in the AUTOEXEC.BAT file.

On Unix, a setuid program is given an environment chosen by its caller, but it runs with different authority from its caller. The dynamic linker will usually load code from locations specified by the environment variables $LD_LIBRARY_PATH and $LD_PRELOAD and run it with the process's authority. If a setuid program did this, it would be insecure, because its caller could get it to run arbitrary code and hence misuse its authority. For this reason, libc unsets these environment variables at startup in a setuid process. setuid programs usually unset unknown environment variables and check others or set them to reasonable values.

The variables can be used both in scripts and on the command line. They are usually referenced by putting special symbols in front of or around the variable name. For instance, to display the user home directory, in most scripting environments, the user has to type:

echo$HOME

In DOS, OS/2 and Windows command-line interpreters such as COMMAND.COM and cmd.exe, the user has to type this:

The commands env, set, and printenv display all environment variables and their values. printenv can also be used to print a single variable by giving that variable name as the sole argument to the command.

A few simple principles govern how environment variables achieve their effect.

Environment variables are local to the process in which they were set. If two shell processes are spawned and the value of an environment variable is changed in one, that change will not be seen by the other.

When a child process is created, it inherits all the environment variables and their values from the parent process. Usually, when a program calls another program, it first creates a child process by forking, then the child adjusts the environment as needed and lastly the child replaces itself with the program to be called. This procedure gives the calling program control over the environment of the called program.

In Unix and Unix-like systems, the names of environment variables are case-sensitive.

In Unix shells, variables may be assigned without the export keyword. Variables defined in this way are displayed by the set command, but are not true environment variables, as they are stored only by the shell and not recognized by the kernel. The printenv command will not display them, and child processes do not inherit them.

VARIABLE=value

However, if used in front of a program to run, the variables will be exported to the environment and thus appear as real environment variables to the program:

VARIABLE=value program_name [arguments]

The persistence of an environment variable can be session-wide or system-wide.

unset is a builtin command implemented by both the Bourne shell family (sh, ksh, bash, etc.) and the C shell family (csh, tcsh, etc.) of Unix command line shells. It unsets a shell variable, removing it from memory and the shell's exported environment. It is implemented as a shell builtin, because it directly manipulates the internals of the shell.[1][2]

Read-only shell variables cannot be unset. If one tries to unset a read-only variable, the unset command will print an error message and return a non-zero exit code.

HOME/{.AppName} (Unix-like) and APPDATA\{DeveloperName\AppName} (Microsoft Windows): for storing application settings. Many applications incorrectly use USERPROFILE for application settings in Windows: USERPROFILE should only be used in dialogs that allow user to choose between paths like Documents/Pictures/Downloads/Music; for programmatic purposes, APPDATA (for roaming application settings shared across multiple devices), LOCALAPPDATA (for local application settings) or PROGRAMDATA (for application settings shared between multiple OS users) should be used.[3]

Contains a colon-separated list of directories that the shell searches for commands that do not contain a slash in their name (commands with slashes are interpreted as file names to execute, and the shell attempts to execute the files directly). It is equivalent to the DOS, OS/2 and Windows%PATH% variable.

$HOME

Contains the location of the user's home directory. Although the current user's home directory can also be found out through the C-functions getpwuid and getuid, $HOME is often used for convenience in various shell scripts (and other contexts). Using the environment variable also gives the user the possibility to point to another directory.

$PWD

This variable points to the current directory. Equivalent to the output of the command pwd when called without arguments.

$DISPLAY

Contains the identifier for the display that X11 programs should use by default.

$LD_LIBRARY_PATH

On many Unix systems with a dynamic linker, contains a colon-separated list of directories that the dynamic linker should search for shared objects when building a process image after exec, before searching in any other directories.

$LANG, $LC_ALL, $LC_...

$LANG is used to set to the default locale. For example, if the locale values are pt_BR, then the language is set to (Brazilian) Portuguese and Brazilian practice is used where relevant. Different aspects of localization are controlled by individual $LC_-variables ($LC_CTYPE, $LC_COLLATE, $LC_DATE etc.). $LC_ALL can be used to force the same locale for all aspects.

$TZ

Refers to time zone. It can be in several formats, either specifying the timezone itself or referencing a file (in /usr/share/zoneinfo).

Under DOS the master environment is provided by the primary command processor, which inherits the pre-environment defined in CONFIG.SYS when first loaded. Its size can be configured through the COMMAND /E:n parameter between 160[4] and 32767[4] bytes. Local environment segments inherited to child processes are typically reduced down to the size of the contents they hold. Some command-line processors (like 4DOS) allow to define a minimum amount of free environment space that will be available when launching secondary shells. While the content of environment variables remains unchanged upon storage, their names (without the "%") are always converted to uppercase, with the exception of pre-environment variables defined via the CONFIG.SYS directive SET under DR DOS 6.0 and higher[5] (and only with SWITCHES=/L (for "allow lowercase names") under DR-DOS 7.02 and higher).[4][6] In principle, MS-DOS 7.0 and higher also supports lowercase variable names (%windir%), but provides no means for the user to define them. Environment variable names containing lowercase letters are stored in the environment just like normal environment variables, but remain invisible to most DOS software, since they are written to expect uppercase variables only.[4][5] Some command processors limit the maximum length of an variable name to 80 characters.[4] While principally only limited by the size of the environment segment, some DOS and 16-bit Windows programs do not expect the contents of environment variables to exceed 128 characters. DR-DOS COMMAND.COM supports environment variables up to 255, 4DOS even up to 512 characters.[4] Since COMMAND.COM can be configured (via /L:128..1024) to support command lines up to 1024 characters internally under MS-DOS 7.0 and higher, environment variables should be expected to contain at least 1024 characters as well.

In batch mode, non-existent environment variables are replaced by a zero-length string.

This variable contains a semicolon-delimited list of directories in which to search for files. It is usually changed via the APPEND /E command, which also ensures that the directory names are converted into uppercase. Some DOS software actually expects the names to be stored in uppercase and the length of the list not to exceed 121[4] characters, therefore the variable is best not modified via the SET command. Long filenames containing spaces or other special characters must not be quoted (").

This variable holds the symbolic name of the currently chosen boot configuration. It is set by the DOS BIOS (IO.SYS, IBMBIO.COM, etc.) to the name defined by the corresponding CONFIG.SYS directive MENUITEM before launching the primary command processor. Its main purpose is to allow further special cases in AUTOEXEC.BAT and similar batchjobs depending on the selected option at boot time. This can be emulated under DR-DOS by utilizing the CONFIG.SYS directive SET like SET CONFIG=1.

This variable contains the fully expanded text of the currently executing command line. It can be read by applications to detect the usage of and retrieve long command lines, since the traditional method to retrieve the command line arguments through the PSP (or related API functions) is limited to 126 characters and is no longer available when FCBs get expanded or the default DTA is used. While 4DOS supports longer command lines, COMMAND.COM still only supports a maximum of 126 characters at the prompt by default (unless overridden with /U:128..255 to specify the size of the command line buffer), but nevertheless internal command lines can become longer through f.e. variable expansion (depending on /L:128..1024 to specify the size of the internal buffer). In addition to the command-line length byte in the PSP, the PSP command line is normally limited by ASCII-13, and command lines longer than 126 characters will typically be truncated by having an ASCII-13 inserted at position 127, but this cannot be relied upon in all scenarios. The variable will be suppressed for external commands invoked with a preceding @-symbol like in @XCOPY ... for backward compatibility and in order to minimize the size of the environment when loading non-relocating TSRs. Some beta versions of Microsoft Chicago used %CMDLINE% to store only the remainder of the command line excessing 126 characters instead of the complete command line.[5]

This variable contains the full 8.3 path to the command processor, typically C:\COMMAND.COM or C:\DOS\COMMAND.COM. It must not contain long filenames, but under DR-DOS it may contain file and directory passwords. It is set up by the primary command processor to point to itself (typically reflecting the settings of the CONFIG.SYS directive SHELL), so that the resident portion of the command processor can reload its transient portion from disk after the execution of larger programs. The value can be changed at runtime to reflect changes in the configuration, which would require the command processor to reload itself from other locations. The variable is also used when launching secondary shells.

Allows a user to specify the /Y switch (to assume "Yes" on queries) as the default for the COPY, XCOPY, and MOVE commands. A default of /Y can be overridden by supplying the /-Y switch on the command line. The /Y switch instructs the command to replace existing files without prompting for confirmation.

Allows a user to specify customized default parameters for the DIR command, including file specifications. Preset default switches can be overridden by providing the negative switch on the command line. For example, if %DIRCMD% contains the /W switch, then it can be overridden by using DIR /-W at the command line. This is similar to a facility to define default switches for DIR through its /C or /R switches under DR-DOSCOMMAND.COM.[5]%DIRCMD% is also supported by the external SDIR.COM/DIR.COMStacker commands under Novell DOS 7 and higher.[5]

This variable controls the display of thousands-separators in messages of various commands. Issued by default, they can be suppressed by specifying SET NO_SEP=ON or SET NO_SEP=1 under PC DOS. DR-DOS additionally allows to override the system's thousands-separator displayed as in f.e. SET NO_SEP=..[4]

This variable contains a semicolon-delimited list of directories in which the command interpreter will search for executable files. Equivalent to the Unix $PATH variable (but some DOS and Windows applications also use the list to search for data files similar as $LD_LIBRARY_PATH on Unix-like systems). It is usually changed via the PATH (or PATH /E under MS-DOS 6.0) command, which also ensures that the directory names are converted into uppercase. Some DOS software actually expects the names to be stored in uppercase and the length of the list not to exceed 123[4] characters, therefore the variable should better not be modified via the SET command.[4]Long filenames containing spaces or other special characters must not be quoted ("). By default, the current directory is searched first, but some command-line processors like 4DOS allow "." (for "current directory") to be included in the list as well in order to override this search order; some DOS programs are incompatible with this extension.[4]

%PROMPT% (supported since DOS 2.0)

This variable contains a $-tokenized string defining the display of the prompt. It is usually changed via the PROMPT command.

%TEMP% (and %TMP%)

These variables contain the path to the directory where temporary files should be stored. Operating system tools typically only use %TEMP%, whereas third-party programs also use %TMP%. Typically %TEMP% takes precedence over %TMP%.

The DR-DOS family supports a number of additional standard environment variables including:

%BETA%

This variable contains an optional message displayed by some versions (including DR DOS 3.41) of COMMAND.COM at the startup of secondary shells.[7]

%DRDOSCFG%/%NWDOSCFG%/%OPENDOSCFG%

This variable contains the directory[8] (without trailing "\") where to search for .INI and .CFG configuration files (that is, DR-DOS application specific files like TASKMGR.INI, TASKMAX.INI, VIEWMAX.INI, FASTBACK.CFG etc., class specific files like COLORS.INI, or global files like DRDOS.INI, NWDOS.INI, OPENDOS.INI, or DOS.INI), as used by the INSTALL and SETUP commands and various DR-DOS programs like DISKOPT, DOSBOOK, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX, or UNDELETE.[5] It must not contain long filenames.

%DRCOMSPEC%

This variable optionally holds an alternative path to the command processor taking precedence over the path defined in the %COMSPEC% variable, optionally including file and directory passwords. Alternatively, it can hold a special value of "ON" or "1" in order to enforce the usage of the %COMSPEC% variable even in scenarios where the %COMSPEC% variable may point to the wrong command-line processor, for example, when running some versions of the DR-DOS SYS command under a foreign operating system.

%DRSYS%

Setting this variable to "ON" or "1" will force some versions of the DR-DOS SYS command to work under foreign operating systems instead of displaying a warning.

This variable may contain the home directory under DR-DOS (including DR DOS 5.0 and 6.0).[5][7]

%INFO%

In some versions of DR-DOS COMMAND.COM this variable defines the string displayed by the $I token of the PROMPT command.[7] It can be used, for example, to inform the user how to exit secondary shells.

%LOGINNAME%

In some versions of DR-DOS COMMAND.COM this variable defines the user name displayed by the $U token of the PROMPT command, as set up by f.e. login scripts for Novell NetWare.[4][5][7] See also the similarly named pseudo-variable %LOGIN_NAME%.

%MDOS_EXEC%

This variable can take the values "ON" or "OFF" under Multiuser DOS. If enabled, the operating system permits applications to shell out to secondary shells with the DOS Program Area (DPA) freed in order to have maximum DOS memory available for secondary applications instead of running them in the same domain as under DOS.

%NOCHAR%

This variable can be used to define the character displayed by some commands in messages for "No" in [Y,N] queries, thereby overriding the current system default (typically "N" in English versions of DR-DOS). If it contains a string, only the first character, uppercased, will be taken. Some commands also support a command line parameter /Y to automatically assume "Yes" on queries, thereby suppressing such prompts. If, however, the parameter /Y:yn is used to specify the "Yes"/"No" characters (thereby overriding any %NOCHAR% setting), queries are not suppressed. See also the related CONFIG.SYS directive NOCHAR and the environment variable %YESCHAR%.

%NOSOUND%

Setting this variable to "ON" or "1" will disable default beeps issued by some DR-DOS commands in certain situations such as to inform the user of the completion of some operation, that user interaction is required, or when a wrong key was pressed. Command line options to specifically enable certain beeps will override this setting.

In some versions of DR-DOS this variable defines the command executed by the $X token of the PROMPT command before COMMAND.COM displays the prompt after returning from external program execution.[5][8]

%SWITCHAR%

This variable defines the SwitChar to be used for argument parsing by some DR-DOS commands. If defined, it overrides the system's current SwitChar setting. The only accepted characters are "/" (DOS style), "-" (Unix style) and "[" (CP/M style). See also the related CONFIG.SYS directive SWITCHAR (to set the system's SwitChar setting) and the %/%system information variable in some issues of DR-DOS COMMAND.COM (to retrieve the current setting for portable batchjobs).

%TASKMGRWINDIR%

This variable specifies the directory, where the WindowsSYSTEM.INI to be used by the DR-DOS TASKMGR multitasker is located, overriding the default procedure to locate the file.[5]

This variable can be used to define the character displayed by some commands in messages for "Yes" in [Y,N] queries, thereby overriding the current system default (typically "Y" in English versions of DR-DOS). If it contains a string, only the first character, uppercased, will be taken. Some commands also support a command line parameter /Y to automatically assume "Yes" on queries, thereby suppressing such prompts. If, however, the parameter /Y:y is used to specify the "Yes" character (thereby overriding any %YESCHAR% setting), queries are not suppressed. See also the related CONFIG.SYS directive YESCHAR and the environment variable %NOCHAR%.

%$CLS%

This variable defines the control sequence to be sent to the console driver to clear the screen when the CLS command is issued, thereby overriding the internal default ("←[2J" under DR-DOS, "←E" under DOS Plus 1.2 on Amstrad machines as well as under Concurrent DOS, Multiuser DOS, and REAL/32 for VT52 terminals, or "←+" under Multiuser DOS for ASCII terminals). If the variable is not defined and no ANSI.SYS console driver is detected, the DR-DOS COMMAND.COM will directly clear the screen via INT 10h/AH=00hBIOS function, like MS-DOS/PC DOS COMMAND.COM does. A special \nnn-notation for octal numbers is supported to allow the definition of special characters like ESC (ASCII-27 = "←" = 1Bh = 33o), as f.e. in SET $CLS=\033[2J. To send the backslash ("\") itself, it can be doubled "\\".[5][7]

Used by DOS Plus to define the screen length of the console in lines. This is used to control in a portable way when the screen output should be temporarily halted until a key is pressed in conjunction with the /P option supported by various commands or with automatic pagnination.[7] See also the related environment variable %$WIDTH% and a similar pseudo-variable %_ROWS%.

%$WIDTH%

Used by DOS Plus to define the screen width of the console in columns. This is used to control in a portable way the formatting of the screen output of commands like DIR /W or TYPE filename.[7] See also the related environment variable %$LENGTH% and a similar pseudo-variable %_COLUMNS%.

This variable can hold an optional control sequence to switch text highlighting, reversion or colorization on. It is used to emphasize or otherwise control the display of the file names in commands like TYPE wildcard, for example SET $ON=\033[1m with ANSI.SYS loaded or SET $ON=\016 for an IBM or ESC/P printer. For the special \nnn octal notation supported, see %$CLS%.[5] While the variable is undefined by default under DR-DOS, the Multiuser DOS default for an ASCII terminal equals SET $ON=\033p.[7] See also the related environment variable %$OFF%.

%$OFF%

This variable can hold an optional control sequence to switch text highlighting, reversion or colorization off. It is used to return to the normal output after the display of file names in commands like TYPE wildcard, for example SET $OFF=\033[0m with ANSI.SYS loaded or SET $OFF=\024 for an IBM or ESC/P printer. For the special \nnn octal notation supported, see %$CLS%.[5] While the variable is undefined by default under DR-DOS, the Multiuser DOS default for an ASCII terminal equals SET $OFF=\033q.[7] See also the related environment variable %$ON%.

%$HEADER%

This variable can hold an optional control sequence issued before the output of the file contents in commands like TYPE under DR-DOS 7.02 and higher. It can be used for highlighting, pagination or formatting, f.e. when sending the output to a printer, i.e. SET $HEADER=\017 for an IBM or ESC/P printer. For the special \nnn octal notation supported, see %$CLS%.[7] See also the related environment variable %$FOOTER%.

%$FOOTER%

This variable can hold an optional control sequence issued after the output of the file contents in commands like TYPE under DR-DOS 7.02 and higher. It is used to return to the normal output format, i.e. SET $FOOTER=\022\014 in the printer example above. For the special \nnn octal notation supported, see %$CLS%.[7] See also the related environment variable %$HEADER%.

Contains a semicolon-separated list of directories which are searched for DLLsbefore the directories given by the %LIBPATH% variable (which is set during system startup with the special CONFIG.SYS directive LIBPATH). It is possible to specify relative directories here, including "." for the current working directory. See also the related environment variable %ENDLIBPATH%.

The %ComSpec% variable contains the full path to the command processor; on Windows NT-based operating systems, this is CMD.EXE, while on Windows 9x and ME, %COMSPEC% is the DOS command processor, COMMAND.COM.

%OS%

The %OS% variable contains a symbolic name of the operating system family to distinguish between differing feature sets in batchjobs. Under Windows NT, Windows 2000, Windows XP and Windows 7, it always holds the string "Windows_NT". It resembles an identically named environment variable %OS% found in all DOS-related operating systems of Digital Research-origin like Concurrent DOS, Multiuser DOS, REAL/32, DOS Plus, DR DOS, Novell DOS and OpenDOS.

%PATH%

This variable contains a semicolon-delimited (do not put spaces in between) list of directories in which the command interpreter will search for an executable file that matches the given command. Environment variables that represent paths may be nested within the %PATH% variable, but only at one level of indirection. If this sub-path environment variable itself contains an environment variable representing a path, %PATH% will not expand properly in the variable substitution. Equivalent to the Unix$PATH variable.

%ProgramFiles%, %ProgramFiles(x86)%, %ProgramW6432%

The %ProgramFiles% variable points to the Program Files directory, which stores all the installed programs of Windows and others. The default on English-language systems is "C:\Program Files". In 64-bit editions of Windows (XP, 2003, Vista), there are also %ProgramFiles(x86)%, which defaults to "C:\Program Files (x86)", and %ProgramW6432%, which defaults to "C:\Program Files". The %ProgramFiles% itself depends on whether the process requesting the environment variable is itself 32-bit or 64-bit (this is caused by Windows-on-Windows 64-bit redirection).

%CommonProgramFiles%

This variable points to the Common Files directory. The default is "C:\Program Files\Common Files" in the English version of Windows.

%SystemDrive%

The %SystemDrive% variable is a special system-wide environment variable found on Windows NT and its derivatives. Its value is the drive upon which the system directory was placed. The value of %SystemDrive% is in most cases "C:".

%SystemRoot%

The %SystemRoot% variable is a special system-wide environment variable found on Windows NT and its derivatives. Its value is the location of the system directory, including the drive and path. The drive is the same as %SystemDrive% and the default path on a clean installation depends upon the version of the operating system. By default, Windows NT 5.1 (Windows XP) and newer versions use "\WINDOWS", Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use "\WINNT", Windows NT 3.5x uses "\WINNT35", and Windows NT 4.0 Terminal Server uses "\WTSRV".

User management variables[citation needed] store information related to resources and settings owned by various user profiles within the system. As a general rule, these variables do not refer to critical system resources or locations that are necessary for the OS to run.

%ALLUSERSPROFILE% (%PROGRAMDATA% for Windows Vista, Windows 7)

This variable expands to the full path to the All Users profile directory. This profile contains resources and settings that are used by all system accounts. Shortcut links copied to the All Users\' Start menu or Desktop directories will appear in every user's Start menu or Desktop, respectively.

%USERDOMAIN%

The name of the Workgroup or Windows Domain to which the current user belongs. The related variable, %LOGONSERVER%, holds the hostname of the server that authenticated the current user's logon credentials (name and password). For home PCs and PCs in a workgroup, the authenticating server is usually the PC itself. For PCs in a Windows domain, the authenticating server is a domain controller (a primary domain controller, or PDC, in Windows NT 4-based domains).

%USERPROFILE%

A special system-wide environment variable found on Windows NT and its derivatives. Its value is the location of the current user's profile directory, in which is found that user's HKCU registry hive (NTUSER). Users can also use the %USERNAME% variable to determine the active users login identification.

Optional System variables[citation needed] are not explicitly specified by default but can be used to modify the default behaviour of certain built-in console commands. These variables also do not need to be explicitly specified as command line arguments.

The following tables shows typical default values of certain environment variables under English versions of Windows as they can be retrieved under CMD.

(Some of these variables are also defined when running COMMAND.COM under Windows, but differ in certain important details: Under COMMAND.COM, the names of environment variable are always uppercased. Some, but not all variables contain short 8.3 rather than long file names. While some variables present in the CMD environment are missing, there are also some variables specific to the COMMAND environment.)

In this list, there is no environment variable that refers to the location of the user's My Documents directory, so there is no standard method for setting a program's home directory to be the My Documents directory.

Besides true environment variables, which are statically stored in the environment until changed or deleted, a number of pseudo-environment variables exist for batch processing.

The so-called replacement parameters or replaceable parameters (Microsoft / IBM terminology) aka replacement variables (Digital Research / Novell / Caldera terminology)[8] or batch file parameters (JP Software terminology)[4]%1..%9 and %0 can be used to retrieve the calling parameters of a batchjob, see SHIFT. In batchjobs, they can be retrieved just like environment variables, but are not actually stored in the environment.

Some command-line processors (like DR-DOSCOMMAND.COM,[8]Multiuser DOSMDOS.COM/TMP.EXE (Terminal Message Process), JP Software 4DOS, 4OS2, 4NT, Take Command and Windows CMD.EXE) support a type of pseudo-environment variables named system information variables (Novell / Caldera terminology)[8] or internal variables (JP Software terminology),[4] which can be used to retrieve various possibly dynamic, but read-only information about the running system in batch jobs. The returned values represent the status of the system in the moment these variables are queried; that is, reading them multiple times in a row may return different values even within the same command; querying them has no direct effect on the system. Since they are not stored in the environment, they are not listed by SET and do not exist for external programs to retrieve. If a true environment variable of the same name is defined, it takes precedence over the corresponding variable until the environment variable is deleted again. They are not case-sensitive. While almost all such variables are prefixed with an underscore ("_") by 4DOS etc. by convention (f.e. %_SECOND%),[4] they are not under DR-DOS COMMAND.COM (f.e. %OS_VERSION%).

In addition, 4DOS, 4OS2, 4NT, and Take Command also support so called variable functions,[4] including user-definable ones. They work just like internal variables, but can take optional parameters (f.e. %@EVAL[]%) and may even change the system status depending on their function.

System information variables supported by DR-DOS COMMAND.COM:

%AM_PM%

This pseudo-variable returns the ante- or post-midday status of the current time. The returned string depends on the locale-specific version of DR-DOS, f.e. "am" or "pm" in the English version. It resembles an identically named identifier variable in Novell NetWare login scripts.

%DAY%

This pseudo-variable returns the days of the current date in a 2-digit format with leading zeros, f.e. "01".."31". See also the similar pseudo-variable %_DAY%. It resembles an identically named identifier variable in Novell NetWare login scripts.

%DAY_OF_WEEK%

This pseudo-variable returns the day name of the week in a 3-character format. The returned string depends on the locale-specific version of DR-DOS, f.e. "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", or "Sat" in the English version. It resembles an identically named identifier variable in Novell NetWare login scripts.

%ERRORLEVEL%

In COMMAND.COM of DR-DOS 7.02 and higher, this pseudo-variable returns the last error level returned by an external program or the RETURN command, f.e. "0".."255".[11][12] See also the identically named pseudo-variable %ERRORLEVEL% under Windows and the IF ERRORLEVEL command.

%ERRORLVL%

In Multiuser DOS as well as in DR-DOS 7.02 and higher, this pseudo-variable returns the last error level in a 3-digit format with leading zeros, f.e. "000".."255".[11][12] See also the related pseudo-variable %ERRORLEVEL% under DR-DOS and the IF ERRORLEVEL command.

%GREETING_TIME%

This pseudo-variable returns the 3-level day greeting time. The returned string depends on the locale-specific version of DR-DOS, f.e. "morning", "afternoon", or "evening" in the English version. It resembles an identically named identifier variable in Novell NetWare login scripts.

%HOUR%

This pseudo-variable returns the hours of the current time in 12-hour format without leading zeros, f.e. "1".."12". It resembles an identically named identifier variable in Novell NetWare login scripts.

%HOUR24%

This pseudo-variable returns the hours of the current time in 24-hour format in a 2-digit format with leading zeros, f.e. "00".."23". It resembles an identically named identifier variable in Novell NetWare login scripts. See also the similar pseudo-variable %_HOUR%.

%MINUTE%

This pseudo-variable returns the minutes of the current time in a 2-digit format with leading zeros, f.e "00".."59". It resembles an identically named identifier variable in Novell NetWare login scripts. See also the similar pseudo-variable %_MINUTE%.

%MONTH%

This pseudo-variable returns the months of the current date in a 2-digit format with leading zeros, f.e. "01".."12". It resembles an identically named identifier variable in Novell NetWare login scripts. See also the similar pseudo-variable %_MONTH%.

%MONTH_NAME%

This pseudo-variable returns the month name of the current date. The returned string depends on the locale-specific version of DR-DOS, f.e. "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", or "December" in the English version. It resembles an identically named identifier variable in Novell NetWare login scripts.

%NDAY_OF_WEEK%

This pseudo-variable returns the number of day of the current week, f.e. "1".."7" (with "1" for Sunday). It resembles an identically named identifier variable in Novell NetWare login scripts.

%OS_VERSION%

This pseudo-variable returns the version of the operating system depending on the current setting of the environment variable %VER%. If %VER% is not defined, %OS_VERSION% returns "off". It resembles an identically named identifier variable in Novell NetWare login scripts, which may return versions also for non-DR-DOS versions of DOS.

%SECOND%

This pseudo-variable returns the seconds of the current time in a 2-digit format with leading zeros, f.e. "00".."59". It resembles an identically named identifier variable in Novell NetWare login scripts. See also the similar pseudo-variable %_SECOND%.

%SHORT_YEAR%

This pseudo-variable returns the year of the current date in a 2-digit format with leading zeros, f.e. "93".."99", "00".."92". It resembles an identically named identifier variable in Novell NetWare login scripts.

%YEAR% and %_YEAR%

Supported since Novell DOS 7, the %YEAR% pseudo-variable returns the year of the current date in a 4-digit format, f.e. "1980".."2099". It resembles an identically named identifier variable in Novell NetWare login scripts. DR-DOS 7.02 and higher added %_YEAR% for compatibility with 4DOS, returning the same value.[4]

%/%

In COMMAND.COM of DR-DOS 7.02 and higher, this pseudo-variable returns the current SwitChar setting of the system, either "/" (DOS style) or "-" (Unix style).[13][14] See also the related CONFIG.SYS directive SWITCHAR and the environment variable %SWITCHAR%.

%_CODEPAGE%

This pseudo-variable returns the systems' current code page ("1".."65533"), f.e. "437", "850", "858". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the CHCP command.

%_COLUMNS%

This pseudo-variable returns the current number of screen columns depending on the display mode, f.e. "40", "80", "132", etc. This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also a similar environment variable %$WIDTH% under DOS Plus.

%_COUNTRY%

This pseudo-variable returns the systems' current country code ("1".."65534"), f.e. "1" for USA, "44" for UK, "49" for Germany, "20049" with ISO 8601, "21049" with ISO 8601 and Euro support. This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the CONFIG.SYS directive COUNTRY.

%_DAY%

This pseudo-variable returns the days of the current date without leading zeros, f.e. "1".."31". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the similar pseudo-variable %DAY%.

%_HOUR%

This pseudo-variable returns the hours of the current time in 24-hour format without leading zeros, f.e. "0".."23". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the similar pseudo-variable %HOUR24%.

%_MINUTE%

This pseudo-variable returns the minutes of the current time without leading zeros, f.e "0".."59". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the similar pseudo-variable %MINUTE%.

%_MONTH%

This pseudo-variable returns the months of the current date without leading zeros, f.e. "1".."12". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the similar pseudo-variable %MONTH%.

%_ROWS%

This pseudo-variable returns the current number of screen rows depending on the display mode, f.e. "25", "43", "50", etc. This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See a similar environment variable %$LENGTH% under DOS Plus.

%_SECOND%

This pseudo-variable returns the seconds of the current time without leading zeros, f.e. "0".."59". This variable was originally introduced by 4DOS,[4] but also became available with COMMAND.COM since DR-DOS 7.02. See also the similar pseudo-variable %SECOND%.

System information variables supported by DR-DOS COMMAND.COM with networking loaded:

%LOGIN_NAME%

This pseudo-variable returns the user name. This always worked with NETX, but it will also work with Personal NetWare's ODI/VLM if the current drive is a PNW-mapped drive (otherwise an empty string is returned). See also the similarly named environment variable %LOGINNAME%.

%P_STATION%

This pseudo-variable returns the physical station number in a format "????????????". The value depends on the MAC address of the network adapter, but can be overridden. It resembles an identically named identifier variable in Novell NetWare login scripts.

%STATION%

This pseudo-variable returns the logical station number starting with "1" for the first client. The numbers are assigned by the file server and remain static for as long as the IPX connection remains established. It resembles an identically named identifier variable in Novell NetWare login scripts.

%FULL_NAME%

This pseudo-variable returns the full name of the logged in user, if available. It resembles an identically named identifier variable in Novell NetWare login scripts. See also the related pseudo-variable %LOGIN_NAME%.

Dynamic environment variables (also named internal variables or system information variables under DOS) are pseudo-environment variables supported by CMD when command-line extensions are enabled, and they expand to various discrete values whenever queried, that is, their values can change when queried multiple times even within the same command. While they can be used in batchjobs and at the prompt, they are not stored in the environment. Consequently, they are neither listed by SET nor do they exist for external programs to read. They are not case-sensitive.

Indirectly, they are also supported under Windows' COMMAND.COM, which has been modified to internally call CMD.EXE to execute the commands.

%CD%

This pseudo-variable expands to the current directory equivalent to the output of the command CD when called without arguments. While a long filename can be returned under CMD.EXE depending on the current directory, the fact that the current directory will always be in 8.3 format under COMMAND.COM will cause it to return a short filename under COMMAND.COM, even when COMMAND internally calls CMD.

%CMDCMDLINE%

This pseudo-variable expands to the original startup parameters of CMD.EXE, f.e. "C:\Windows\system32\cmd.exe". Under Windows' COMMAND.COM, this may return something like "C:\Windows\system32\cmd.exe /c ..." due to the fact that COMMAND.COM calls CMD.EXE internally.

This pseudo-variable expands to the current date. The date is displayed according to the current user's date format preferences.

%ERRORLEVEL%

This pseudo-variable expands to the last set error level, a value between "0" and "255" (without leading zeros).[11][15][12] External commands and some internal commands set error levels upon execution. See also the identically named pseudo-variable %ERRORLEVEL% under DR-DOS and the IF ERRORLEVEL command.

%RANDOM%

This pseudo-variable returns a random number between "0" and "32767".

%TIME%

This pseudo-variable returns the current time. The time is displayed according to the current user's time format preferences. If the %TIME% and %DATE% variables are both used, it is important to read them both in this particular order in rapid succession in order to avoid midnight-rollover problems.

Some critics warn against overuse of environment variables, because of differences between shell languages, that they are ephemeral and easy to overlook, are specific to a user and not to a program. The recommended alternative is configuration files.[16][17]

1.
Computer process
–
In computing, a process is an instance of a computer program that is being executed. It contains the code and its current activity. Depending on the system, a process may be made up of multiple threads of execution that execute instructions concurrently. A computer program is a collection of instructions, while a process is the actual execution of those instructions. Several processes may be associated with the program, for example. Multitasking is a method to allow processes to share processors. Each CPU executes a task at a time. However, multitasking allows each processor to switch between tasks that are being executed without having to wait for each task to finish. Depending on the system implementation, switches could be performed when tasks perform input/output operations. A common form of multitasking is time-sharing, time-sharing is a method to allow fast response for interactive user applications. In time-sharing systems, context switches are performed rapidly, which makes it seem like multiple processes are being executed simultaneously on the same processor and this seeming execution of multiple processes simultaneously is called concurrency. In general, a system process consists of the following resources. Memory, which includes the code, process-specific data, a call stack. Operating system descriptors of resources that are allocated to the process, such as file descriptors or handles, security attributes, such as the process owner and the process set of permissions. Processor state, such as the content of registers and physical memory addressing, the state is typically stored in computer registers when the process is executing, and in memory otherwise. The operating system holds most of this information about processes in data structures called process control blocks. Any subset of the resources, typically at least the processor state, the operating system keeps its processes separate and allocates the resources they need, so that they are less likely to interfere with each other and cause system failures. The operating system may also provide mechanisms for communication to enable processes to interact in safe

2.
Version 7 Unix
–
Seventh Edition Unix, also called Version 7 Unix, Version 7 or just V7, was an important early release of the Unix operating system. V7, released in 1979, was the last Bell Laboratories release to see widespread distribution before the commercialization of Unix by AT&T Corporation in the early 1980s, V7 was originally developed for Digital Equipment Corporations PDP-11 minicomputers and was later ported to other platforms. Unix versions from Bell Labs were designated by the edition of the manual with which they were accompanied. Released in 1979, the Seventh Edition was preceded by Sixth Edition, V7 was the first readily portable version of Unix. The first Sun workstations ran a V7 port by UniSoft, the first version of Xenix for the Intel 8086 was derived from V7, the VAX port of V7, called UNIX/32V, was the direct ancestor of the popular 4BSD family of Unix systems. The group at University of Wollongong that had ported V6 to the Interdata 7/32 ported V7 to that machine as well, Interdata sold the port as Edition VII, making it the first commercial UNIX offering. DEC distributed their own PDP-11 version of V7, called V7M, UEG evolved into the group that later developed Ultrix. At the time of its release, though, its greatly extended feature set came at the expense of a decrease in performance compared to V6, the exact number of system calls varies depending on the operating system version. More recent systems have seen growth in the number of supported system calls. Linux 3.2.0 has 380 system calls and FreeBSD8.0 has over 450, in 2002, Caldera International released V7 as FOSS under a permissive BSD-like software license. Bootable images for V7 can still be downloaded today, and can be run on modern hosts using PDP-11 emulators such as SIMH, an x86 port has been developed by Nordier & Associates. Paul Allen maintains several publicly accessible computer systems, including a PDP-11/70 running Unix Version 7. Request a login from Living Computers, Museum + Labs and try running Version 7 Unix on the original equipment, many new features were introduced in Version 7. Programming tools, lex, lint, and make, the Portable C Compiler was provided along with the earlier, PDP-11-specific, C compiler by Ritchie. These first appeared in the Research Unix lineage in Version 7, mpx files were considered experimental, not enabled in the default kernel, and disappeared from later versions, which offered sockets or CB UNIXs IPC facilities instead. Version 6 Unix Seventh Edition Unix terminal interface Ancient UNIX Unix Seventh Edition manual Browsable source code PDP Unix Preservation Society

3.
Unix
–
Among these is Apples macOS, which is the Unix version with the largest installed base as of 2014. Many Unix-like operating systems have arisen over the years, of which Linux is the most popular, Unix was originally meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-programmer users. The system grew larger as the system started spreading in academic circles, as users added their own tools to the system. Unix was designed to be portable, multi-tasking and multi-user in a time-sharing configuration and these concepts are collectively known as the Unix philosophy. By the early 1980s users began seeing Unix as a universal operating system. Under Unix, the system consists of many utilities along with the master control program. To mediate such access, the kernel has special rights, reflected in the division between user space and kernel space, the microkernel concept was introduced in an effort to reverse the trend towards larger kernels and return to a system in which most tasks were completed by smaller utilities. In an era when a standard computer consisted of a disk for storage and a data terminal for input and output. However, modern systems include networking and other new devices, as graphical user interfaces developed, the file model proved inadequate to the task of handling asynchronous events such as those generated by a mouse. In the 1980s, non-blocking I/O and the set of inter-process communication mechanisms were augmented with Unix domain sockets, shared memory, message queues, and semaphores. In microkernel implementations, functions such as network protocols could be moved out of the kernel, Multics introduced many innovations, but had many problems. Frustrated by the size and complexity of Multics but not by the aims and their last researchers to leave Multics, Ken Thompson, Dennis Ritchie, M. D. McIlroy, and J. F. Ossanna, decided to redo the work on a much smaller scale. The name Unics, a pun on Multics, was suggested for the project in 1970. Peter H. Salus credits Peter Neumann with the pun, while Brian Kernighan claims the coining for himself, in 1972, Unix was rewritten in the C programming language. Bell Labs produced several versions of Unix that are referred to as Research Unix. In 1975, the first source license for UNIX was sold to faculty at the University of Illinois Department of Computer Science, UIUC graduate student Greg Chesson was instrumental in negotiating the terms of this license. During the late 1970s and early 1980s, the influence of Unix in academic circles led to adoption of Unix by commercial startups, including Sequent, HP-UX, Solaris, AIX. In the late 1980s, AT&T Unix System Laboratories and Sun Microsystems developed System V Release 4, in the 1990s, Unix-like systems grew in popularity as Linux and BSD distributions were developed through collaboration by a worldwide network of programmers

4.
Operating system
–
An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require a system to function. Operating systems are found on many devices that contain a computer – from cellular phones, the dominant desktop operating system is Microsoft Windows with a market share of around 83. 3%. MacOS by Apple Inc. is in place, and the varieties of Linux is in third position. Linux distributions are dominant in the server and supercomputing sectors, other specialized classes of operating systems, such as embedded and real-time systems, exist for many applications. A single-tasking system can run one program at a time. Multi-tasking may be characterized in preemptive and co-operative types, in preemptive multitasking, the operating system slices the CPU time and dedicates a slot to each of the programs. Unix-like operating systems, e. g. Solaris, Linux, cooperative multitasking is achieved by relying on each process to provide time to the other processes in a defined manner. 16-bit versions of Microsoft Windows used cooperative multi-tasking, 32-bit versions of both Windows NT and Win9x, used preemptive multi-tasking. Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in tandem, a distributed operating system manages a group of distinct computers and makes them appear to be a single computer. The development of networked computers that could be linked and communicate with each other gave rise to distributed computing, distributed computations are carried out on more than one machine. When computers in a work in cooperation, they form a distributed system. The technique is used both in virtualization and cloud computing management, and is common in large server warehouses, embedded operating systems are designed to be used in embedded computer systems. They are designed to operate on small machines like PDAs with less autonomy and they are able to operate with a limited number of resources. They are very compact and extremely efficient by design, Windows CE and Minix 3 are some examples of embedded operating systems. A real-time operating system is a system that guarantees to process events or data by a specific moment in time. A real-time operating system may be single- or multi-tasking, but when multitasking, early computers were built to perform a series of single tasks, like a calculator. Basic operating system features were developed in the 1950s, such as resident monitor functions that could run different programs in succession to speed up processing

5.
Linux
–
Linux is a Unix-like computer operating system assembled under the model of free and open-source software development and distribution. The defining component of Linux is the Linux kernel, an operating system kernel first released on September 17,1991 by Linus Torvalds, the Free Software Foundation uses the name GNU/Linux to describe the operating system, which has led to some controversy. Linux was originally developed for computers based on the Intel x86 architecture. Because of the dominance of Android on smartphones, Linux has the largest installed base of all operating systems. Linux is also the operating system on servers and other big iron systems such as mainframe computers. It is used by around 2. 3% of desktop computers, the Chromebook, which runs on Chrome OS, dominates the US K–12 education market and represents nearly 20% of the sub-$300 notebook sales in the US. Linux also runs on embedded systems – devices whose operating system is built into the firmware and is highly tailored to the system. This includes TiVo and similar DVR devices, network routers, facility automation controls, televisions, many smartphones and tablet computers run Android and other Linux derivatives. The development of Linux is one of the most prominent examples of free, the underlying source code may be used, modified and distributed‍—‌commercially or non-commercially‍—‌by anyone under the terms of its respective licenses, such as the GNU General Public License. Typically, Linux is packaged in a known as a Linux distribution for both desktop and server use. Distributions intended to run on servers may omit all graphical environments from the standard install, because Linux is freely redistributable, anyone may create a distribution for any intended use. The Unix operating system was conceived and implemented in 1969 at AT&Ts Bell Laboratories in the United States by Ken Thompson, Dennis Ritchie, Douglas McIlroy, first released in 1971, Unix was written entirely in assembly language, as was common practice at the time. Later, in a key pioneering approach in 1973, it was rewritten in the C programming language by Dennis Ritchie, the availability of a high-level language implementation of Unix made its porting to different computer platforms easier. Due to an earlier antitrust case forbidding it from entering the computer business, as a result, Unix grew quickly and became widely adopted by academic institutions and businesses. In 1984, AT&T divested itself of Bell Labs, freed of the legal obligation requiring free licensing, the GNU Project, started in 1983 by Richard Stallman, has the goal of creating a complete Unix-compatible software system composed entirely of free software. Later, in 1985, Stallman started the Free Software Foundation, by the early 1990s, many of the programs required in an operating system were completed, although low-level elements such as device drivers, daemons, and the kernel were stalled and incomplete. Linus Torvalds has stated that if the GNU kernel had been available at the time, although not released until 1992 due to legal complications, development of 386BSD, from which NetBSD, OpenBSD and FreeBSD descended, predated that of Linux. Torvalds has also stated that if 386BSD had been available at the time, although the complete source code of MINIX was freely available, the licensing terms prevented it from being free software until the licensing changed in April 2000

6.
MacOS
–
Within the market of desktop, laptop and home computers, and by web usage, it is the second most widely used desktop OS after Microsoft Windows. Launched in 2001 as Mac OS X, the series is the latest in the family of Macintosh operating systems, Mac OS X succeeded classic Mac OS, which was introduced in 1984, and the final release of which was Mac OS9 in 1999. An initial, early version of the system, Mac OS X Server 1.0, was released in 1999, the first desktop version, Mac OS X10.0, followed in March 2001. In 2012, Apple rebranded Mac OS X to OS X. Releases were code named after big cats from the release up until OS X10.8 Mountain Lion. Beginning in 2013 with OS X10.9 Mavericks, releases have been named after landmarks in California, in 2016, Apple rebranded OS X to macOS, adopting the nomenclature that it uses for their other operating systems, iOS, watchOS, and tvOS. The latest version of macOS is macOS10.12 Sierra, macOS is based on technologies developed at NeXT between 1985 and 1997, when Apple acquired the company. The X in Mac OS X and OS X is pronounced ten, macOS shares its Unix-based core, named Darwin, and many of its frameworks with iOS, tvOS and watchOS. A heavily modified version of Mac OS X10.4 Tiger was used for the first-generation Apple TV, Apple also used to have a separate line of releases of Mac OS X designed for servers. Beginning with Mac OS X10.7 Lion, the functions were made available as a separate package on the Mac App Store. Releases of Mac OS X from 1999 to 2005 can run only on the PowerPC-based Macs from the time period, Mac OS X10.5 Leopard was released as a Universal binary, meaning the installer disc supported both Intel and PowerPC processors. In 2009, Apple released Mac OS X10.6 Snow Leopard, in 2011, Apple released Mac OS X10.7 Lion, which no longer supported 32-bit Intel processors and also did not include Rosetta. All versions of the system released since then run exclusively on 64-bit Intel CPUs, the heritage of what would become macOS had originated at NeXT, a company founded by Steve Jobs following his departure from Apple in 1985. There, the Unix-like NeXTSTEP operating system was developed, and then launched in 1989 and its graphical user interface was built on top of an object-oriented GUI toolkit using the Objective-C programming language. This led Apple to purchase NeXT in 1996, allowing NeXTSTEP, then called OPENSTEP, previous Macintosh operating systems were named using Arabic numerals, e. g. Mac OS8 and Mac OS9. The letter X in Mac OS Xs name refers to the number 10 and it is therefore correctly pronounced ten /ˈtɛn/ in this context. However, a common mispronunciation is X /ˈɛks/, consumer releases of Mac OS X included more backward compatibility. Mac OS applications could be rewritten to run natively via the Carbon API, the consumer version of Mac OS X was launched in 2001 with Mac OS X10.0. Reviews were variable, with praise for its sophisticated, glossy Aqua interface

7.
PC DOS 2.0
–
IBM PC DOS is a discontinued operating system for the IBM Personal Computer, manufactured and sold by IBM from the 1981 into the 2000s. Before version 6.1, PC DOS was an IBM-branded version of MS-DOS, from version 6.1 on, PC DOS became IBMs independent product. The IBM task force assembled to develop the PC decided that critical components of the machine, including the operating system and this radical break from company tradition of in-house development was one of the key decisions that made the IBM PC an industry standard. At that time private company Microsoft, founded five years before by Bill Gates, was selected for the operating system. IBM wanted Microsoft to retain ownership of whatever software it developed, according to task force member Jack Sams, The reasons were internal. We had a problem being sued by people claiming we had stolen their stuff. It could be expensive for us to have our programmers look at code that belonged to someone else because they would then come back and say we stole it. We had lost a series of suits on this, and so we didnt want to have a product which was clearly someone elses product worked on by IBM people and we went to Microsoft on the proposition that we wanted this to be their product. IBM first contacted Microsoft to look the company over in July 1980, negotiations continued over the next months, and the paperwork was officially signed in early November. Although IBM expected that most customers would use PC DOS, The IBM PC also supported CP/M-86, which became available six months after PC DOS, and UCSD p-System operating systems. IBMs expectation proved correct, one found that 96. 3% of PCs were ordered with the $40 PC-DOS compared to 3. 4% for the $240 CP/M-86. Microsoft first licensed, then purchased 86-DOS from Seattle Computer Products, ORear got 86-DOS to run on the prototype PC in February 1981. 86-DOS had to be converted from 8-inch to 5. 25-inch floppy disks and integrated with the BIOS, IBM had more people writing requirements for the computer than Microsoft had writing code. ORear often felt overwhelmed by the number of people he had to deal with at the ESD facility in Boca Raton, 86-DOS was rebranded IBM PC DOS1.0 for its August 1981 release with the IBM PC. The initial version of DOS was largely based on CP/M-801. x and most of its architecture, function calls, the most significant difference was the fact that it introduced a different file system, FAT12. Unlike all later DOS versions, the DATE and TIME commands were separate rather than part of COMMAND. COM. Single-sided 160 kilobyte 5.25 floppies were the only disk format supported, in late 1981 Paterson, now at Microsoft, began writing PC DOS1.10. It debuted in May 1982 along with the Revision B IBM PC, support for the new double-sided drives was added, allowing 320 kB per disk

8.
Microsoft Windows
–
Microsoft Windows is a metafamily of graphical operating systems developed, marketed, and sold by Microsoft. It consists of families of operating systems, each of which cater to a certain sector of the computing industry with the OS typically associated with IBM PC compatible architecture. Active Windows families include Windows NT, Windows Embedded and Windows Phone, defunct Windows families include Windows 9x, Windows 10 Mobile is an active product, unrelated to the defunct family Windows Mobile. Microsoft introduced an operating environment named Windows on November 20,1985, Microsoft Windows came to dominate the worlds personal computer market with over 90% market share, overtaking Mac OS, which had been introduced in 1984. Apple came to see Windows as an encroachment on their innovation in GUI development as implemented on products such as the Lisa. On PCs, Windows is still the most popular operating system, however, in 2014, Microsoft admitted losing the majority of the overall operating system market to Android, because of the massive growth in sales of Android smartphones. In 2014, the number of Windows devices sold was less than 25% that of Android devices sold and this comparison however may not be fully relevant, as the two operating systems traditionally target different platforms. As of September 2016, the most recent version of Windows for PCs, tablets, smartphones, the most recent versions for server computers is Windows Server 2016. A specialized version of Windows runs on the Xbox One game console, Microsoft, the developer of Windows, has registered several trademarks each of which denote a family of Windows operating systems that target a specific sector of the computing industry. It now consists of three operating system subfamilies that are released almost at the time and share the same kernel. Windows, The operating system for personal computers, tablets. The latest version is Windows 10, the main competitor of this family is macOS by Apple Inc. for personal computers and Android for mobile devices. Windows Server, The operating system for server computers, the latest version is Windows Server 2016. Unlike its clients sibling, it has adopted a strong naming scheme, the main competitor of this family is Linux. Windows PE, A lightweight version of its Windows sibling meant to operate as an operating system, used for installing Windows on bare-metal computers. The latest version is Windows PE10.0.10586.0, Windows Embedded, Initially, Microsoft developed Windows CE as a general-purpose operating system for every device that was too resource-limited to be called a full-fledged computer. The following Windows families are no longer being developed, Windows 9x, Microsoft now caters to the consumers market with Windows NT. Windows Mobile, The predecessor to Windows Phone, it was a mobile operating system

9.
OS/2
–
OS/2 is a series of computer operating systems, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for Operating System/2, because it was introduced as part of the generation change release as IBMs Personal System/2 line of second-generation personal computers. The first version of OS/2 was released in December 1987 and newer versions were released until December 2001, OS/2 was intended as a protected mode successor of PC DOS. Because of this heritage, OS/2 shares similarities with Unix, Xenix, IBM discontinued its support for OS/2 on 31 December 2006. Since then, it has been updated, maintained and marketed under the name eComStation, in 2015 it was announced that a new OEM distribution of OS/2 would be released that was to be called ArcaOS. The development of OS/2 began when IBM and Microsoft signed the Joint Development Agreement in August 1985 and it was code-named CP/DOS and it took two years for the first product to be delivered. OS/21.0 was announced in April 1987 and released in December, the original release is textmode-only, and a GUI was introduced with OS/21.1 about a year later. OS/2 features an API for controlling the display and handling keyboard. In addition, development tools include a subset of the video, a task-switcher named Program Selector is available through the Ctrl-Esc hotkey combination, allowing the user to select among multitasked text-mode sessions. Communications and database-oriented extensions were delivered in 1988, as part of OS/21.0 Extended Edition, SNA, X. 25/APPC/LU6.2, LAN Manager, Query Manager, SQL. The promised graphical user interface, Presentation Manager, was introduced with OS/21.1 in October,1988 and it had a similar user interface to Windows 2.1, which was released in May of that year. The Extended Edition of 1.1, sold only through IBM sales channels, introduced distributed database support to IBM database systems, in 1989, Version 1.2 introduced Installable Filesystems and notably the HPFS filesystem. HPFS provided a number of improvements over the older FAT file system, including long filenames, in addition, extended attributes were also added to the FAT file system. The Extended Edition of 1.2 introduced TCP/IP and Ethernet support, OS/2 and Windows-related books of the late 1980s acknowledged the existence of both systems and promoted OS/2 as the system for the future. The collaboration between IBM and Microsoft unravelled in 1990, between the releases of Windows 3.0 and OS/21.3, during this time, Windows 3.0 became a tremendous success, selling millions of copies in its first year. Much of its success was because Windows 3.0 was bundled with most new computers, OS/2, on the other hand, was available only as an expensive stand-alone software package. In addition, OS/2 lacked device drivers for many devices such as printers. Windows, on the hand, supported a much larger variety of hardware

10.
Unix-like
–
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-like application is one that behaves like the corresponding Unix command or shell, there is no standard for defining the term, and some difference of opinion is possible as to the degree to which a given operating system or application is Unix-like. The Open Group owns the UNIX trademark and administers the Single UNIX Specification and they do not approve of the construction Unix-like, and consider it a misuse of their trademark. Other parties frequently treat Unix as a genericized trademark, in 2007, Wayne R. Gray sued to dispute the status of UNIX as a trademark, but lost his case, and lost again on appeal, with the court upholding the trademark and its ownership. Unix-like systems started to appear in the late 1970s and early 1980s, many proprietary versions, such as Idris, UNOS, Coherent, and UniFlex, aimed to provide businesses with the functionality available to academic users of UNIX. These largely displaced the proprietary clones, growing incompatibility among these systems led to the creation of interoperability standards, including POSIX and the Single UNIX Specification. Various free, low-cost, and unrestricted substitutes for UNIX emerged in the 1980s and 1990s, including 4. 4BSD, Linux, some of these have in turn been the basis for commercial Unix-like systems, such as BSD/OS and OS X. The various BSD variants are notable in that they are in fact descendants of UNIX, however, the BSD code base has evolved since then, replacing all of the AT&T code. Since the BSD variants are not certified as compliant with the Single UNIX Specification, dennis Ritchie, one of the original creators of Unix, expressed his opinion that Unix-like systems such as Linux are de facto Unix systems. Eric S. Raymond and Rob Landley have suggested there are three kinds of Unix-like systems, Genetic UNIX Those systems with a historical connection to the AT&T codebase. Most commercial UNIX systems fall into this category, so do the BSD systems, which are descendants of work done at the University of California, Berkeley in the late 1970s and early 1980s. Some of these systems have no original AT&T code but can trace their ancestry to AT&T designs. Trademark or branded UNIX These systems‍—‌largely commercial in nature‍—‌have been determined by the Open Group to meet the Single UNIX Specification and are allowed to carry the UNIX name, many ancient UNIX systems no longer meet this definition. Around 2001, Linux was given the opportunity to get a certification including free help from the POSIX chair Andrew Josey for the price of one dollar. Some non-Unix-like operating systems provide a Unix-like compatibility layer, with degrees of Unix-like functionality. IBM z/OSs UNIX System Services is sufficiently complete to be certified as trademark UNIX, cygwin and MSYS both provide a GNU environment on top of the Microsoft Windows user API, sufficient for most common open source software to be compiled and run. Subsystem for Unix-based Applications provides Unix-like functionality as a Windows NT subsystem, Windows Subsystem for Linux provides a Linux-compatible kernel interface developed by Microsoft and containing no Linux code, with Ubuntu user-mode binaries running on top of it

11.
Command shell
–
In computing, a shell is a user interface for access to an operating systems services. In general, operating system shells use either a command-line interface or graphical user interface, depending on a computers role and it is named a shell because it is a layer around the operating system kernel. The design of a shell is also dictated by the employed computer periphery, such as keyboard, pointing device or touchscreen. CLIs are also easier to be operated via refreshable braille display, graphical shells place a low burden on beginning computer users, and they are characterized as being simple and easy to use. With the widespread adoption of programs with GUIs, the use of shells has gained greater adoption. Since graphical shells come with certain disadvantages, most GUI-enabled operating systems provide additional CLI shells. Operating systems provide services to their users, including file management, process management, batch processing. Most operating system shells are not direct interfaces to the underlying kernel, shells are actually special applications that use the kernel API in just the same way as it is used by other application programs. A shell manages the interaction by prompting users for input, interpreting their input. Since the operating system shell is actually an application, it may easily be replaced with another similar application, on Unix-like systems, Secure Shell protocol is usually used for text-based shells, while SSH tunneling can be used for X Window System–based graphical user interfaces. On Microsoft Windows, Remote Desktop Protocol can be used to provide GUI remote access, most operating system shells fall into one of two categories – command-line and graphical. Command line shells provide an interface to the operating system. Other possibilities, although not so common, include voice user interface, the relative merits of CLI- and GUI-based shells are often debated. A command-line interface is a system shell that uses alphanumeric characters typed on a keyboard to provide instructions and data to the operating system. Operating systems such as UNIX have a variety of shell programs with different commands, syntax. Application programs may also implement a command-line interface, for example, in Unix-like systems, the telnet program has a number of commands for controlling a link to a remote computer system. Since the commands to the program are made of the same keystrokes as the data being sent to a remote computer, an escape sequence can be defined, using either a special local keystroke that is never passed on but always interpreted by the local system. The program becomes modal, switching between interpreting commands from the keyboard or passing keystrokes on as data to be processed, a feature of many command-line shells is the ability to save sequences of commands for re-use

12.
Bash (Unix shell)
–
Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. First released in 1989, it has been distributed widely as the shell for Linux distributions. A version is available for Windows 10, Bash is a command processor that typically runs in a text window, where the user types commands that cause actions. Bash can also read commands from a file, called a script, like all Unix shells, it supports filename globbing, piping, here documents, command substitution, variables and control structures for condition-testing and iteration. The keywords, syntax and other features of the language are all copied from sh. Other features, e. g. history, are copied from csh and ksh, Bash is a POSIX shell, but with a number of extensions. A security hole in Bash dating from version 1.03, dubbed Shellshock, was discovered in early September 2014, patches to fix the bugs were made available soon after the bugs were identified, but not all computers have yet been updated. Brian Fox began coding Bash on January 10,1988 after Richard Stallman became dissatisfied with the lack of progress being made by a prior developer, Fox released Bash as a beta, version. Since then, Bash has become by far the most popular shell among users of Linux, becoming the default shell on that operating systems various distributions. Bash has also ported to Microsoft Windows and distributed with Cygwin and MinGW, to DOS by the DJGPP project, to Novell NetWare. In September 2014, Stéphane Chazelas, a Unix/Linux, network and telecom specialist working in the UK, the bug, first disclosed on September 24, was named Shellshock and assigned the numbers CVE-2014-6271, CVE-2014-6277 and CVE-2014-7169. The bug was regarded as severe, since CGI scripts using Bash could be vulnerable, the bug was related to how Bash passes function definitions to subshells through environment variables. The Bash command syntax is a superset of the Bourne shell command syntax, when a user presses the tab key within an interactive command-shell, Bash automatically uses command line completion to match partly typed program names, filenames and variable names. The Bash command-line completion system is flexible and customizable, and is often packaged with functions that complete arguments and filenames for specific programs. Bashs syntax has many extensions lacking in the Bourne shell, Bash can perform integer calculations without spawning external processes. It uses the command and the $ variable syntax for this purpose, for example, it can redirect standard output and standard error at the same time using the &> operator. This is simpler to type than the Bourne shell equivalent command > file 2>&1, Bash supports process substitution using the < and >syntax, which substitutes the output of a command where a filename is normally used. But in POSIX mode, Bash conforms with POSIX more closely, since version 2. 05b Bash can redirect standard input from a here string using the <<< operator

13.
Env
–
Env is a shell command for Unix and Unix-like operating systems. It is used to print a list of environment variables or run another utility in an altered environment without having to modify the currently existing environment. Using env, variables may be added or removed, and existing variables may be changed by assigning new values to them, in practice, env has another common use. It is often used by shell scripts to launch the correct interpreter, in this usage, the environment is typically not changed. For example, here is the code of a very simple Python script, In this example, note that it is possible to specify the interpreter without using env, by giving the full path of the python interpreter. A problem with that approach is that on different computer systems, by instead using env as in the example, the interpreter is searched for and located at the time the script is run. This makes the script more portable, but also increases the risk that the interpreter is selected because it searches for a match in every directory on the executable search path. It also suffers from the problem in that the path to the env binary may also be different on a per-machine basis. Set env, set the environment for command invocation – Commands & Utilities Reference, The Single UNIX Specification, env, run a program in a modified environment – OpenBSD General Commands Manual

14.
Shell script
–
A shell script is a computer program designed to be run by the Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages, typical operations performed by shell scripts include file manipulation, program execution, and printing text. A script which sets up the environment, runs the program, the typical Unix/Linux/Posix-compliant installation includes the Korn Shell in several possible versions such as ksh88, Korn Shell 93 and others. On the other hand, the various shells plus tools like awk, sed, grep, other shells available on a machine or available for download and/or purchase include ash, msh, ysh, zsh, the Tenex C Shell, a Perl-like shell and others. Related programmes such as based on Python, Ruby, C, Java, Perl, Pascal. Another somewhat common shell is osh, whose manual page states it is an enhanced, the user could then simply use l for the most commonly used short listing. Another example of a script that could be used as a shortcut would be to print a list of all the files and directories within a given directory. In this case, the script would start with its normal starting line of #. /bin/sh. Following this, the script executes the command clear which clears the terminal of all text before going to the next line, the following line provides the main function of the script. The ls -al command list the files and directories that are in the directory from which the script is being run, the ls command attributes could be changed to reflect the needs of the user. Note, If an implementation does not have the command, try using the clr command instead. /build to create the updated program, test it. Since the 1980s or so, however, scripts of this type have been replaced with utilities like make which are specialized for building programs, a modern shell script is not just on the same footing as system commands, but rather many system commands are actually shell scripts. Like standard system commands, shell scripts classically omit any kind of filename extension unless intended to be read into a shell through a special mechanism for this purpose. With these sorts of features available, it is possible to write reasonably sophisticated applications as shell scripts, the standard Unix tools sed and awk provide extra capabilities for shell programming, Perl can also be embedded in shell scripts as can other scripting languages like Tcl. Perl and Tcl come with graphics toolkits as well, the specifics of what separates scripting languages from high-level programming languages is a frequent source of debate. But generally speaking a language is one which requires an interpreter. While files with the. sh file extension are usually a script of some kind. Perhaps the biggest advantage of writing a script is that the commands

15.
COMMAND.COM
–
COMMAND. COM is the default operating system shell for DOS operating systems and the default command line interpreter on Windows 95, Windows 98 and Windows ME. COMMAND. COMs successor on OS/2 and Windows NT systems is CMD. EXE, COMMAND. COM is also available on IA-32 versions of those systems to provide compatibility when running DOS applications within the NTVDM. Programs executed by COMMAND. COM are DOS programs that use the MS-DOS API to communicate with the operating system, as a shell, COMMAND. COM has two distinct modes of work. First is the mode, in which the user types commands which are then executed immediately. The second is the mode, which executes a predefined sequence of commands stored as a text file with the extension. BAT. Internal Commands are commands stored directly inside the COMMAND. COM binary, thus, they can only be executed directly from the command interpreter. All commands are run only after the Enter key is pressed at the end of the line, COMMAND. COM is not case-sensitive, meaning commands can be typed in any mixture of upper and lower case. BREAK Controls the handling of program interruption with Ctrl+C or Ctrl+Break, CHCP Displays or changes the current system code page. CHDIR, CD Changes the current working directory or displays the current directory, COPY Copies one file to another. CTTY Defines the device to use for input and output, DATE Display and set the date of the system. When used on a directory, deletes all files inside the directory only, in comparison, the external command DELTREE deletes all subdirectories and files inside a directory as well as the directory itself. DIR Lists the files in the specified directory, ECHO Toggles whether text is displayed or not. Also displays text on the screen, EXIT Exits from COMMAND. COM and returns to the program which launched it. LFNFOR Enables or disables the return of long filenames by the FOR command, LOADHIGH, LH Loads a program into upper memory. LOCK Enables external programs to perform low-level disk access to a volume, MKDIR, MD Creates a new directory. PATH Displays or changes the value of the PATH environment variable which controls the places where COMMAND. COM will search for executable files, PROMPT Displays or change the value of the PROMPT environment variable which controls the appearance of the prompt. REN, RENAME Renames a file or directory, RMDIR, RD Removes an empty directory. SET Sets the value of an environment variable, Without arguments, TIME Display and set the time of the system

16.
Windows registry
–
The Registry is a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the Registry. The kernel, device drivers, services, Security Accounts Manager, the Registry also allows access to counters for profiling system performance. In simple terms, The Registry or Windows Registry contains information, settings, options, and other values for programs and hardware installed on all versions of Microsoft Windows operating systems. For example, when a program is installed, a new subkey containing settings like a programs location, its version, when introduced with Windows 3.1, the Windows Registry primarily stored configuration information for COM-based components. It is not a requirement for Windows applications to use the Windows Registry, for example. NET Framework applications use XML files for configuration, while portable applications usually keep their configuration files with their executable. Prior to the Windows Registry. INI files stored each programs settings as a text file, by contrast, the Windows Registry stores all application settings in one logical repository and in a standardized form. According to Microsoft, this offers advantages over. INI files. Since file parsing is done more efficiently with a binary format. As well, strongly typed data can be stored in the Registry and this is a benefit when editing keys manually using regedit. exe, the built-in Windows Registry Editor. Because the Registry is a database, it offers improved system integrity with such as atomic updates. If two processes attempt to update the same Registry value at the time, one processs change will precede the others. Where changes are made to. INI files, such conditions can result in inconsistent data that does not match either attempted update. The Registry contains two elements, keys and values. Registry keys are container objects similar to folders, Registry values are non-container objects similar to files. Keys may contain values and subkeys, keys are referenced with a syntax similar to Windows path names, using backslashes to indicate levels of hierarchy. Keys must have a case insensitive name without backslashes, hKEY_LOCAL_MACHINE\Software\Microsoft\Windows refers to the subkey Windows of the subkey Microsoft of the subkey Software of the HKEY_LOCAL_MACHINE root key. Different users, programs, services or remote systems may only see parts of the hierarchy or distinct hierarchies from the same root keys. Registry values are name/data pairs stored within keys, Registry values are referenced separately from Registry keys

17.
Command line
–
A program which handles the interface is called a command language interpreter or shell. The interface is implemented with a command line shell, which is a program that accepts commands as text input. Command-line interfaces to computer operating systems are widely used by casual computer users. Alternatives to the line include, but are not limited to text user interface menus, keyboard shortcuts. Examples of this include the Windows versions 1,2,3,3.1, and 3.11, DosShell, and Mouse Systems PowerPanel. Command-line interfaces are preferred by more advanced computer users, as they often provide a more concise. Programs with command-line interfaces are generally easier to automate via scripting, a program that implements such a text interface is often called a command-line interpreter, command processor or shell. Under most operating systems, it is possible to replace the shell program with alternatives, examples include 4DOS for DOS, 4OS2 for OS/2. For example, the default Windows GUI is a program named EXPLORER. EXE. These programs are shells, but not CLIs, application programs may also have command line interfaces. When a program is launched from an OS command line shell, interactive command line sessions, After launch, a program may provide an operator with an independent means to enter commands in the form of text. OS inter-process communication, Most operating systems support means of inter-process communication, Command lines from client processes may be redirected to a CLI program by one of these methods. Some applications support only a CLI, presenting a CLI prompt to the user, Some examples of CLI-only applications are, DEBUG Diskpart Ed Edlin Fdisk Ping Some computer programs support both a CLI and a GUI. In some cases, a GUI is simply a wrapper around a separate CLI executable file, in other cases, a program may provide a CLI as an optional alternative to its GUI. CLIs and GUIs often support different functionality, for example, all features of MATLAB, a numerical analysis computer program, are available via the CLI, whereas the MATLAB GUI exposes only a subset of features. The early Sierra games, like the first three Kings Quest games, used commands from a command line to move the character around in the graphic window. Early computer systems often used teleprinter machines as the means of interaction with a human operator, the computer became one end of the human-to-human teleprinter model. So instead of a human communicating with another human over a teleprinter, in time, the actual mechanical teleprinter was replaced by a glass tty, and then by a smart terminal

18.
Windows PowerShell
–
PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language built on the. NET Framework. Initially a Windows component only, PowerShell was made open-source and cross-platform on 18 August 2016, in PowerShell, administrative tasks are generally performed by cmdlets, which are specialized. NET classes implementing a particular operation. Sets of cmdlets may be combined into scripts, executables, or by instantiating regular. NET classes and these work by accessing data in different data stores, like the file system or registry, which are made available to the PowerShell runtime via PowerShell providers. PowerShell also provides a hosting API with which the PowerShell runtime can be embedded inside other applications and these applications can then use PowerShell functionality to implement certain operations, including those exposed via the graphical interface. Other Microsoft applications including Microsoft SQL Server 2008 also expose their management interface via PowerShell cmdlets, PowerShell includes its own extensive, console-based help, similar to man pages in Unix shells, via the Get-Help cmdlet. Local help contents can be retrieved from the Internet via Update-Help cmdlet, alternatively, help from the web can be acquired on a case-by-case basis via the -online switch to Get-Help. Every released version of Microsoft DOS and Microsoft Windows for personal computers has included a command-line interface tool, the shell is a command line interpreter that supports a few basic commands. For other purposes, a console application must be invoked from the shell. The shell also includes a language, which can be used to automate various tasks. In Windows Server 2003, the situation was improved, but scripting support was considered unsatisfactory. Microsoft attempted to address some of shortcomings by introducing the Windows Script Host in 1998 with Windows 98. It integrates with the Active Script engine and allows scripts to be written in languages, such as JScript and VBScript. Different versions of Windows provided various special-purpose command line interpreters with their own command sets, none of them were integrated with the command shell, nor were they interoperable. By 2002 Microsoft had started to develop a new approach to command line management, the shell and the ideas behind it were published in August 2002 in a white paper titled Monad Manifesto. Monad was to be a new extensible command shell with a design that would be capable of automating a full range of core administrative tasks. Microsoft first showed off Monad at the Professional Development Conference in Los Angeles in October 2003, a private beta program began a few months later which eventually led to a public beta program. Microsoft published the first Monad public beta release on June 17,2005, Beta 2 on September 11,2005, and Beta 3 on January 10,2006. Not much later, on April 25,2006 Microsoft formally announced that Monad had been renamed Windows PowerShell, Release Candidate 1 of PowerShell was released at the same time

19.
Bourne shell
–
The Bourne shell is a shell, or command-line interpreter, for computer operating systems. The Bourne shell was the shell for Version 7 Unix. Most Unix-like systems continue to have /bin/sh—which will be the Bourne shell, developed by Stephen Bourne at Bell Labs, it was a replacement for the Thompson shell, whose executable file had the same name—sh. It was released in 1977 in the Version 7 Unix release distributed to colleges and universities, although it is used as an interactive command interpreter, it was also intended as a scripting language and contains most of the features that are commonly considered to produce structured programs. Work on the Bourne shell initially started in 1976, first appearing in Version 7 Unix, the Bourne shell superseded the Mashey shell. Some of the goals of the shell were, To allow shell scripts to be used as filters. To provide programmability including control flow and variables, control over all input/output file descriptors. Control over signal handling within scripts, no limits on string lengths when interpreting shell scripts. Rationalize and generalize string quoting mechanism and this allowed context to be established at startup and provided a way for shell scripts to pass context to sub scripts without having to use explicit positional parameters. Here documents using << to embed a block of text within a script. For ~ do ~ done loops, in particular the use of $* to loop over arguments, case ~ in ~ esac selection mechanism, primarily intended to assist argument parsing. Sh provided support for environment variables using keyword parameters and exportable variables and it contains strong provisions for controlling input and output and in its expression matching facilities. Stephen Bournes coding style was influenced by his experience with the ALGOL 68C compiler that he had working on at Cambridge University. Moreover, – although the v7 shell is written in C – Bourne took advantage of some macros to give the C source code an ALGOL68 flavor and these macros inspired the IOCCC – International Obfuscated C Code Contest. Over the years, the Bourne shell was enhanced at AT&T, the various variants are thus called like the respective AT&T Unix version it was released with. As the shell was never versioned, the way to identify it was testing its features. The DMERT shell runs on 3B21D computers still in use in the telecommunications industry, the Korn shell written by David Korn based on the original Bourne Shell source code, was a middle road between the Bourne shell and the C shell. Its syntax was chiefly drawn from the Bourne shell, while its job control features resembled those of the C shell, the functionality of the original Korn Shell was used as a basis for the POSIX shell standard

20.
Korn shell
–
KornShell is a Unix shell which was developed by David Korn at Bell Labs in the early 1980s and announced at USENIX on July 14,1983. The initial development was based on Bourne shell source code, other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs- and vi-style line editing modes code, respectively. KornShell is backward-compatible with the Bourne shell and includes features of the C shell. Job control was added to the Bourne Shell in 1989, a choice of three command line editing styles based on vi, Emacs, and XEmacs. Associative arrays and built-in floating point arithmetic operations, in 2000 the source code was released under a license particular to AT&T, but since the 93q release in early 2005 it has been licensed under the Eclipse Public License. KornShell is available as part of the AT&T Software Technology Open Source Software Collection, as KornShell was initially only available through a proprietary license from AT&T, a number of free and open source alternatives were created. These include pdksh, mksh, GNU bash, and zsh, ksh93 is still maintained by its author. This version also provides shell-level mappings for Motif widgets and it was intended as competitor to Tcl/Tk. The original KornShell, ksh88, became the default shell on AIX in version 4, unixWare 7 includes both ksh88 and ksh93. The default Korn shell is ksh93, which is supplied as /usr/bin/ksh, unixWare also includes dtksh when CDE is installed. There are several software products related to KornShell, dtksh – a fork of ksh93 included as part of CDE. tksh – a fork of ksh93 that provides access to the Tk widget toolkit, oksh – a Linux-based fork of OpenBSDs flavour of KornShell. It is used as the shell in DeLi Linux. Mksh – a free implementation of the KornShell language, forked from pdksh and it was originally developed for MirOS BSD and is licensed under permissive terms, specifically, the MirOS Licence. In addition to its usage on BSD, this variant has replaced pdksh on Debian, sKsh – an AmigaOS flavour that provides several Amiga-specific features, such as ARexx interoperability. KornShell is included in UWIN, a Unix compatibility package by David Korn, comparison of computer shells List of Unix utilities The test program Morris I. The new KornShell command and programming language, David G. Korn, Charles J. Northrup and Jeffery Korn The New KornShell—ksh93, Linux Journal, Issue 27, July 1996 Korn shell home page github for AT&T Software Technology, including ksh source code. Official KSH mailing lists, ast-developers and ast-users, ksh93 man page at the Wayback Machine ksh88 man page Public Domain Korn shell MirBSD Korn Shell mksh – MirOS BSD i386 General Commands Manual

21.
C shell
–
The C shell is a Unix shell created by Bill Joy while he was a graduate student at University of California, Berkeley in the late 1970s. It has been distributed, beginning with the 2BSD release of the Berkeley Software Distribution that Joy began distributing in 1978. Other early contributors to the ideas or the code were Michael Ubell, Eric Allman, Mike OBrien, the C shell is a command processor typically run in a text window, allowing the user to type commands. The C shell can also read commands from a file, called a script, like all Unix shells, it supports filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing and iteration. What differentiated the C shell from others, especially in the 1980s, were its interactive features and its new features made it easier and faster to use. The overall style of the language looked more like C and was seen as more readable, on many systems, such as Mac OS X and Red Hat Linux, csh is actually tcsh, an improved version of csh. Often one of the two files is either a hard link or a link to the other, so that either name refers to the same improved version of the C shell. On Debian and some derivatives, there are two different packages, csh and tcsh, because it only added functionality and did not change what was there, tcsh remained backward compatible with the original C shell. Though it started as a branch from the original source tree Joy had created. Tcsh is very stable but new releases continue to appear once a year. The main design objectives for the C shell were that it should look more like the C programming language and that it should be better for interactive use. The Unix system had been written almost exclusively in C, so the C shells first objective was a language that was more stylistically consistent with the rest of the system. The keywords, the use of parentheses and the C shells built-in expression grammar, by todays standards, csh may not seem particularly more C-like than many other popular scripting languages. But through the 80s and 90s, the difference was seen as striking, particularly compared to Bourne shell. This example illustrates the C shells more conventional expression operators and syntax, the square bracketed condition had to be evaluated by the slower means of running the external test program. Shs if command took its argument words as a new command to be run as a child process, If the child exited with a zero return code, sh would look for a then clause and run that nested block. Otherwise it would run the else, hard-linking the test program as both test and [ gave the notational advantage of the square brackets and the appearance that the functionality of test was part of the sh language. Shs use of a keyword to mark the end of a control block was a style borrowed from ALGOL68

22.
Unix shell
–
A Unix shell is a command-line interpreter or shell that provides a traditional Unix-like command line user interface. Users direct the operation of the computer by entering commands as text for a command line interpreter to execute, users typically interact with a Unix shell using a terminal emulator, however, direct operation via serial hardware connections, or networking session, are common for server systems. All Unix shells provide filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing, the most generic sense of the term shell means any program that users employ to type commands. In Unix-like operating systems, users typically have many choices of command-line interpreters for interactive sessions, when a user logs in to the system interactively, a shell program is automatically executed for the duration of the session. The Unix shell is both a command language as well as a scripting programming language, and is used by the operating system as the facility to control the execution of the system. Shells created for operating systems often provide similar functionality. On hosts with a system, like macOS, some users may never use the shell directly. However, some vendors have replaced the traditional shell-based startup system with different approaches. The first Unix shell was the Thompson shell, sh, written by Ken Thompson at Bell Labs and distributed with Versions 1 through 6 of Unix, though not in current use, it is still available as part of some Ancient UNIX Systems. It was modeled after the Multics shell, itself modeled after the RUNCOM program Louis Pouzin showed to the Multics Team, the rc suffix on some Unix configuration files, is a remnant of the RUNCOM ancestry of Unix shells. The PWB shell or Mashey shell, sh, was a version of the Thompson shell, augmented by John Mashey and others and distributed with the Programmers Workbench UNIX. It focused on making shell programming practical, especially in large shared computing centers and it added shell variables, user-executable shell scripts, and interrupt-handling. Control structures were extended from if/goto to if/then/else/endif, switch/breaksw/endsw, as shell programming became widespread, these external commands were incorporated into the shell itself for performance. But the most widely distributed and influential of the early Unix shells were the Bourne shell, both shells have been used as the coding base and model for many derivative and work-alike shells with extended feature sets. The Bourne shell, sh, was a rewrite by Stephen Bourne at Bell Labs. The language, including the use of a keyword to mark the end of a block, was influenced by ALGOL68. Traditionally, the Bourne shell program name is sh and its path in the Unix file system hierarchy is /bin/sh, but a number of compatible work-alikes are also available with various improvements and additional features. The sh of FreeBSD, NetBSD are based on ash that has enhanced to be POSIX conformant for the occasion

23.
User (computing)
–
A user is a person who uses a computer or network service. Users generally use a system or a product without the technical expertise required to fully understand it. Power users use advanced features of programs, though they are not necessarily capable of computer programming, a user often has a user account and is identified to the system by a username. Other terms for username include login name, screenname, nickname and handle, some software products provide services to other systems and have no direct end users. End users are the ultimate users of a software product. The term is used to abstract and distinguish those who use the software from the developers of the system. This abstraction is primarily useful in designing the user interface, in user-centered design, personas are created to represent the types of users. It is sometimes specified for each persona which types of user interfaces it is comfortable with, in this context, graphical user interfaces are usually preferred to command-line interfaces for the sake of usability. The end-user development discipline blurs the distinction between users and developers. It designates activities or techniques in which people who are not professional developers create automated behavior, systems whose actor is another system or a software agent have no direct end users. To log in to an account, a user is required to authenticate oneself with a password or other credentials for the purposes of accounting, security, logging. Once the user has logged on, the system will often use an identifier such as an integer to refer to them, rather than their username. In Unix systems, the username is correlated with an identifier or user id. Computer systems operate in one of two based on what kind of users they have, Single-user systems do not have a concept of several user accounts. Multi-user systems have such a concept, and require users to identify themselves using the system. Each user account on a system typically has a home directory, in which to store files pertaining exclusively to that users activities. User accounts often contain a public profile, which contains basic information provided by the accounts owner. Various computer operating-systems and applications expect/enforce different rules for the formats of user names, in some cases, a user may be better known by their username than by their real name, such as CmdrTaco, founder of the website Slashdot

24.
File system
–
In computing, a file system or filesystem is used to control how data is stored and retrieved. Without a file system, information placed in a storage medium would be one large body of data with no way to tell where one piece of information stops, by separating the data into pieces and giving each piece a name, the information is easily isolated and identified. Taking its name from the way paper-based information systems are named, the structure and logic rules used to manage the groups of information and their names is called a file system. There are many different kinds of file systems, each one has different structure and logic, properties of speed, flexibility, security, size and more. Some file systems have been designed to be used for specific applications, for example, the ISO9660 file system is designed specifically for optical discs. File systems can be used on different types of storage devices that use different kinds of media. The most common device in use today is a hard disk drive. Other kinds of media that are used include flash memory, magnetic tapes, in some cases, such as with tmpfs, the computers main memory is used to create a temporary file system for short-term use. Some file systems are used on local storage devices, others provide file access via a network protocol. Some file systems are virtual, meaning that the files are computed on request or are merely a mapping into a different file system used as a backing store. The file system access to both the content of files and the metadata about those files. It is responsible for arranging storage space, reliability, efficiency, before the advent of computers the term file system was used to describe a method of storing and retrieving paper documents. By 1961 the term was being applied to computerized filing alongside the original meaning, by 1964 it was in general use. A file system consists of two or three layers, sometimes the layers are explicitly separated, and sometimes the functions are combined. The logical file system is responsible for interaction with the user application and it provides the application program interface for file operations — OPEN, CLOSE, READ, etc. and passes the requested operation to the layer below it for processing. The logical file system manage open file table entries and per-process file descriptors and this layer provides file access, directory operations, security and protection. The second optional layer is the file system. This interface allows support for multiple concurrent instances of physical file systems, the third layer is the physical file system

25.
Computer terminal
–
A computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system. The function of a terminal is confined to display and input of data, a terminal that depends on the host computer for its processing power is called a dumb terminal or thin client. A personal computer can run terminal emulator software that replicates the function of a terminal, sometimes allowing concurrent use of local programs and access to a distant terminal host system. The terminal of the first working programmable, fully automatic digital Turing-complete computer, the Z3, had a keyboard, early user terminals connected to computers were electromechanical teleprinters/teletypewriters, such as the Teletype Model 33 ASR, originally used for telegraphy or the Friden Flexowriter. Later printing terminals such as the DECwriter LA30 were developed, however printing terminals were limited by the speed at which paper could be printed, and for interactive use the paper record was unnecessary. The problem was that the amount of memory needed to store the information on a page of text was comparable to the memory in low end minicomputers then in use. Displaying the information at video speeds was also a challenge and the control logic took up a rack worth of pre-integrated circuit electronics. Another approach involved the use of the tube, a specialized CRT developed by Tektronix that retained information written on it without the need to refresh. The Datapoint 3300 from Computer Terminal Corporation was announced in 1967 and shipped in 1969 and it solved the memory space issue mentioned above by using a digital shift-register design, and using only 72 columns rather than the later more common choice of 80. Some type of blinking cursor that can be positioned, the term intelligent in this context dates from 1969. Notable examples include the IBM2250 and IBM2260, predecessors to the IBM3270, providing even more processing possibilities, workstations like the Televideo TS-800 could run CP/M-86, blurring the distinction between terminal and Personal Computer. Most terminals were connected to minicomputers or mainframe computers and often had a green or amber screen, typically terminals communicate with the computer via a serial port via a null modem cable, often using an EIA RS-232 or RS-422 or RS-423 or a current loop serial interface. In fact, the design for the Intel 8008 was originally conceived at Computer Terminal Corporation as the processor for the Datapoint 2200. While early IBM PCs had single color green screens, these screens were not terminals. The screen of a PC did not contain any character generation hardware, all signals and video formatting were generated by the video display card in the PC, or by the CPU. An IBM PC monitor, whether it was the monochrome display or the 16-color display, was technically much more similar to an analog TV set than to a terminal. With suitable software a PC could, however, emulate a terminal, the Data General One could be booted into terminal emulator mode from its ROM. Since the advent and subsequent popularization of the computer, few genuine hardware terminals are used to interface with computers today

26.
Terminal emulator
–
A terminal emulator, terminal application, term, or tty for short, is a program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the terminal covers all remote terminals. A terminal emulator inside a graphical interface is often called a terminal window. A terminal window allows the access to a text terminal and all its applications such as command-line interfaces. These may be running either on the machine or on a different one via telnet, ssh. On Unix-like operating systems, it is common to have one or more terminal windows connected to the local machine, terminals usually support a set of escape sequences for controlling color, cursor position, etc. Examples include the family of terminal control sequence standards known as ECMA-48, Terminal emulators may implement a local echo function, which may erroneously be named half-duplex, or still slightly incorrectly echoplex. Terminal emulators may implement local editing, also known as line-at-a-time mode and this is also mistakenly referred to as half-duplex. In this mode, the terminal emulator only sends complete lines of input to the host system, the user enters and edits a line, but it is held locally within the terminal emulator as it is being edited. It is not transmitted until the user signals its completion, usually with the ↵ Enter key on the keyboard or a button of some sort in the user interface. At that point the line is transmitted. Line-at-a-time mode implies local echo, since otherwise the user will not be able to see the line as it is being edited and constructed, however, line-at-a-time mode is independent of echo mode and does not require local echo. When entering a password, for example, line-at-a-time entry with local editing is possible, the complexities of line-at-a-time mode are exemplified by the line-at-a-time mode option in the telnet protocol. In asynchronous terminals data can flow in any direction at any time, in synchronous terminals a protocol controls who may send data when. IBM 3270-based terminals used with IBM mainframe computers are an example of synchronous terminals and they operate in an essentially screen-at-a-time mode. Users can make changes to a page, before submitting the updated screen to the remote machine as a single action. Other examples of synchronous terminals include the IBM5250, ICL7561, Honeywell Bull VIP7800, additionally, programs have been developed to emulate other terminal emulators such as xterm and assorted console terminals. Finally, some emulators simply refer to a standard, such as ANSI, such programs are available on many platforms ranging from DOS and Unix to Windows and macOS to embedded operating systems found in cellphones and industrial hardware

27.
Vt100
–
The VT100 is a video terminal, introduced in August 1978 by Digital Equipment Corporation. This led to rapid uptake of the ANSI standard, becoming the de facto standard for terminal emulators, the VT100s, especially the VT102, was extremely successful in the market, and made DEC the leading terminal vendor. The VT100 series was replaced by the VT200 series starting in 1983, ultimately, over six million terminals in the VT series would be sold, based largely on the success of the VT100s. DECs first successful video terminal was the VT50, introduced in 1974, the VT52 featured a text display with 80 columns and 24 rows, bidirectional scrolling, and a custom control language that allowed the cursor to be moved about the screen. The VT100 was introduced in August 1978, replacing the VT50/VT52 family, like the earlier models, it communicated with its host system over serial lines at a speed selectable between 50 and 19,200 bit/s. Basic improvements on the VT52 included a 132 column mode, and a variety of graphic renditions including blinking, bolding, reverse video, the VT100 also introduced an additional box-drawing character set containing various pseudographics that allowed the drawing of on-screen forms. All setup of the VT100 was accomplished using interactive displays presented on the screen, maintainability was also significantly improved since a VT100 could be disassembled quickly without use of tools. The major change within the system was the control system, unlike the VT50/52s proprietary language, the VT100 were based on the emerging ANSI X3.64 standard for command codes. At the time, computer vendors suggested that the standard was beyond the state of the art, the introduction of low-cost microprocessors and the ever-falling cost of computer memory addressed these problems, and the VT100 used the new Intel 8080 as its internal driver. In addition, the VT100 provided backwards compatibility for VT52 users, in 1983, the VT100 was replaced by the more-powerful VT200 series terminals such as the VT220. The VT100 was the first of Digitals terminals to be based on an industry-standard microprocessor, options could be added to the terminal to support an external printer, additional graphic renditions, and more memory. The later option, known as Advanced Video Option or AVO, the VT100 became a platform on which Digital constructed related products. The VT101 and VT102 were cost-reduced, non-expandable follow-on versions, the VT101 was essentially a base-model VT100, while the VT102 came standard with the AVO and serial printer port options pre-installed. The VT105 contained a simple graphics subsystem known as waveform graphics which was compatible with same system in the earlier VT55. This system allowed two mathematical functions to be drawn to the screen on top of the text display, allowing text and graphics to be mixed to produce charts. The VT100 form factor left significant room in the case for expansion, the VT180 added a single-board microcomputer using a Zilog Z80 to run CP/M. The VT278 added a PDP-8 processor, allowing the terminal to run Digitals WPS-8 word processing software, notes DEC video terminal history VT100 user guide VT100 Series Technical Manual ECMA-48 The DEC category at the Terminals Wiki

28.
Dumb terminal
–
A computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system. The function of a terminal is confined to display and input of data, a terminal that depends on the host computer for its processing power is called a dumb terminal or thin client. A personal computer can run terminal emulator software that replicates the function of a terminal, sometimes allowing concurrent use of local programs and access to a distant terminal host system. The terminal of the first working programmable, fully automatic digital Turing-complete computer, the Z3, had a keyboard, early user terminals connected to computers were electromechanical teleprinters/teletypewriters, such as the Teletype Model 33 ASR, originally used for telegraphy or the Friden Flexowriter. Later printing terminals such as the DECwriter LA30 were developed, however printing terminals were limited by the speed at which paper could be printed, and for interactive use the paper record was unnecessary. The problem was that the amount of memory needed to store the information on a page of text was comparable to the memory in low end minicomputers then in use. Displaying the information at video speeds was also a challenge and the control logic took up a rack worth of pre-integrated circuit electronics. Another approach involved the use of the tube, a specialized CRT developed by Tektronix that retained information written on it without the need to refresh. The Datapoint 3300 from Computer Terminal Corporation was announced in 1967 and shipped in 1969 and it solved the memory space issue mentioned above by using a digital shift-register design, and using only 72 columns rather than the later more common choice of 80. Some type of blinking cursor that can be positioned, the term intelligent in this context dates from 1969. Notable examples include the IBM2250 and IBM2260, predecessors to the IBM3270, providing even more processing possibilities, workstations like the Televideo TS-800 could run CP/M-86, blurring the distinction between terminal and Personal Computer. Most terminals were connected to minicomputers or mainframe computers and often had a green or amber screen, typically terminals communicate with the computer via a serial port via a null modem cable, often using an EIA RS-232 or RS-422 or RS-423 or a current loop serial interface. In fact, the design for the Intel 8008 was originally conceived at Computer Terminal Corporation as the processor for the Datapoint 2200. While early IBM PCs had single color green screens, these screens were not terminals. The screen of a PC did not contain any character generation hardware, all signals and video formatting were generated by the video display card in the PC, or by the CPU. An IBM PC monitor, whether it was the monochrome display or the 16-color display, was technically much more similar to an analog TV set than to a terminal. With suitable software a PC could, however, emulate a terminal, the Data General One could be booted into terminal emulator mode from its ROM. Since the advent and subsequent popularization of the computer, few genuine hardware terminals are used to interface with computers today

29.
Path (computing)
–
A path, the general form of the name of a file or directory, specifies a unique location in a file system. The delimiting character is most commonly the slash, the character, or colon. Paths are used extensively in science to represent the directory/file relationships common in modern operating systems. Resources can be represented by either absolute or relative paths, around 1970, Unix introduced the forward slash character as its directory separator. In 1981, when the version of Microsoft DOS was released. A major portion of the utilities packaged with DOS came from IBM, the command line prompts of these IBM-written utilities made use of the forward slash character as a switch which is still existent today. However, on Unix the dash character is used for switches, an absolute or full path points to the same location in a file system, regardless of the current working directory. To do that, it must include the root directory, by contrast, a relative path starts from some given working directory, avoiding the need to provide the full absolute path. A filename can be considered as a path based at the current working directory. If the working directory is not the parent directory, a file not found error will result if the file is addressed by its name. Japanese and Korean versions of Windows may often display the ¥ character or the ₩ character instead of the directory separator, in such cases the code for a backslash is being drawn as these characters. Very early versions of MS-DOS replaced the backslash with these glyphs on the display to make it possible to them by programs that only understood 7-bit ASCII. Mac OS X, as a derivative of UNIX, uses UNIX paths internally, however, to preserve compatibility for software and familiarity for users, many portions of the GUI switch / typed by the user to, internally, and switch them back when displaying filenames. The UNC syntax for Windows systems has the form, \\ComputerName\SharedFolder\Resource Microsoft often refers to this as a network path. Some Microsoft Windows interfaces also allow or require UNC syntax for WebDAV share access, instead, the SharedFolder name consists of an arbitrary name assigned to the folder when defining its sharing. The shell in Windows XP and Windows Vista, explorer. exe and this can be simplified by using raw strings, as in C#s @\\\\ or Pythons r\\\\ or Perls \\\\. Most Unix-like systems use a similar syntax, POSIX allows treating a path beginning with two slashes in an implementation-defined manner, though in other cases systems must treat multiple slashes as single slashes. Both can be components of a relative path, where

30.
DOS
–
None of these systems were officially named DOS, and indeed DOS is a general term for disk operating system. MS-DOS dominated the IBM PC compatible market between 1981 and 1995, and Microsoft Windows, still ran on top of it until about 2001, dozens of other operating systems also use the acronym DOS, including DOS/360 from 1966. Others are Apple DOS, Apple ProDOS, Atari DOS, Commodore DOS, TRSDOS, see List of DOS operating systems § Other operating systems. IBM PC DOS and its predecessor, 86-DOS, resembled Digital Researchs CP/M—the dominant disk operating system for 8-bit Intel 8080, DOS instead ran on Intel 8086 16-bit processors. Starting with MS-DOS1.28 and PC DOS2.0 the operating system incorporated various features inspired by Xenix, when IBM introduced the IBM PC, built with the Intel 8088 microprocessor, they needed an operating system. Seeking an 8088-compatible build of CP/M, IBM initially approached Microsoft CEO Bill Gates, IBM was sent to Digital Research, and a meeting was set up. However, the negotiations for the use of CP/M broke down, Digital Research wished to sell CP/M on a royalty basis, while IBM sought a single license. Digital Research founder Gary Kildall refused, and IBM withdrew, Gates in turn approached Seattle Computer Products. There, programmer Tim Paterson had developed a variant of CP/M-80, the system was initially named QDOS, before being made commercially available as 86-DOS. Microsoft purchased 86-DOS, allegedly for $50,000 and this became Microsoft Disk Operating System, MS-DOS, introduced in 1981. Within a year Microsoft licensed MS-DOS to over 70 other companies, Microsoft later required the use of the MS-DOS name, with the exception of the IBM variant. IBM continued to develop their version, PC DOS, for the IBM PC, Digital Research became aware that an operating system similar to CP/M was being sold by IBM, and threatened legal action. IBM responded by offering an agreement, they would give PC consumers a choice of PC DOS or CP/M-86, side-by-side, CP/M cost almost $200 more than PC DOS, and sales were low. CP/M faded, with MS-DOS and PC DOS becoming the operating system for PCs. Microsoft originally sold MS-DOS only to original equipment manufacturers, one major reason for this was that not all early PCs were 100% IBM PC compatible. DOS was structured such that there was a separation between the specific device driver code and the DOS kernel. Microsoft provided an OEM Adaptation Kit which allowed OEMs to customize the device driver code to their particular system, by the early 1990s, most PCs adhered to IBM PC standards so Microsoft began selling MS-DOS in retail with MS-DOS5.0. In the mid-1980s Microsoft developed a version of DOS

31.
Windows
–
Microsoft Windows is a metafamily of graphical operating systems developed, marketed, and sold by Microsoft. It consists of families of operating systems, each of which cater to a certain sector of the computing industry with the OS typically associated with IBM PC compatible architecture. Active Windows families include Windows NT, Windows Embedded and Windows Phone, defunct Windows families include Windows 9x, Windows 10 Mobile is an active product, unrelated to the defunct family Windows Mobile. Microsoft introduced an operating environment named Windows on November 20,1985, Microsoft Windows came to dominate the worlds personal computer market with over 90% market share, overtaking Mac OS, which had been introduced in 1984. Apple came to see Windows as an encroachment on their innovation in GUI development as implemented on products such as the Lisa. On PCs, Windows is still the most popular operating system, however, in 2014, Microsoft admitted losing the majority of the overall operating system market to Android, because of the massive growth in sales of Android smartphones. In 2014, the number of Windows devices sold was less than 25% that of Android devices sold and this comparison however may not be fully relevant, as the two operating systems traditionally target different platforms. As of September 2016, the most recent version of Windows for PCs, tablets, smartphones, the most recent versions for server computers is Windows Server 2016. A specialized version of Windows runs on the Xbox One game console, Microsoft, the developer of Windows, has registered several trademarks each of which denote a family of Windows operating systems that target a specific sector of the computing industry. It now consists of three operating system subfamilies that are released almost at the time and share the same kernel. Windows, The operating system for personal computers, tablets. The latest version is Windows 10, the main competitor of this family is macOS by Apple Inc. for personal computers and Android for mobile devices. Windows Server, The operating system for server computers, the latest version is Windows Server 2016. Unlike its clients sibling, it has adopted a strong naming scheme, the main competitor of this family is Linux. Windows PE, A lightweight version of its Windows sibling meant to operate as an operating system, used for installing Windows on bare-metal computers. The latest version is Windows PE10.0.10586.0, Windows Embedded, Initially, Microsoft developed Windows CE as a general-purpose operating system for every device that was too resource-limited to be called a full-fledged computer. The following Windows families are no longer being developed, Windows 9x, Microsoft now caters to the consumers market with Windows NT. Windows Mobile, The predecessor to Windows Phone, it was a mobile operating system

32.
X11
–
The X Window System is a windowing system for bitmap displays, common on UNIX-like computer operating systems. X provides the framework for a GUI environment, drawing and moving windows on the display device and interacting with a mouse. X does not mandate the user interface – this is handled by individual programs, as such, the visual styling of X-based environments varies greatly, different programs may present radically different interfaces. X originated at the Massachusetts Institute of Technology in 1984, the protocol has been version 11 since September 1987. The X. Org Foundation leads the X project, with the current reference implementation, X. Org Server, available as free and open source software under the MIT License, X is an architecture-independent system for remote graphical user interfaces and input device capabilities. Each person using a terminal has the ability to interact with the display with any type of user input device. X provides the framework, or primitives, for building such GUI environments, drawing and moving windows on the display and interacting with a mouse. X does not mandate the user interface, individual client programs handle this, programs may use Xs graphical abilities with no user interface. As such, the styling of X-based environments varies greatly. Unlike most earlier display protocols, X was specifically designed to be used over network connections rather than on an integral or attached display device. X features network transparency, which means an X program running on a computer somewhere on a network can display its user interface on an X server running on other computer on the network. The fact that the server is applied to the software in front of the user is often surprising to users accustomed to their programs being clients to services on remote computers. Xs network protocol is based on X command primitives and this approach allows both 2D and 3D operations by an X client application which might be running on a different computer to still be fully accelerated on the X servers display. X provides no support for audio, several projects exist to fill this niche. X uses a model, an X server communicates with various client programs. The server accepts requests for graphical output and sends back user input, a client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session. An X client itself may emulate an X server by providing services to other clients. This is known as X nesting, open-source clients such as Xnest and Xephyr support such X nesting

33.
Shared object
–
In computer science, a library is a collection of non-volatile resources used by computer programs, often to develop software. These may include data, documentation, help data, message templates, pre-written code. In IBMs OS/360 and its successors they are referred to as partitioned data sets, a library is also a collection of implementations of behavior, written in terms of a language, that has a well-defined interface by which the behavior is invoked. For instance, people who want to write a higher level program can use a library to make system calls instead of implementing those system calls over and over again, in addition, the behavior is provided for reuse by multiple independent programs. A program invokes the library-provided behavior via a mechanism of the language, for example, in a simple imperative language such as C, the behavior in a library is invoked by using Cs normal function-call. What distinguishes the call as being to a library, versus being to function in the same program, is the way that the code is organized in the system. This distinction can gain a hierarchical notion when a program grows large, in that case, there may be internal libraries that are reused by independent sub-portions of the large program. The value of a lies in the reuse of the behavior. When a program invokes a library, it gains the behavior implemented inside that library without having to implement that behavior itself, libraries encourage the sharing of code in a modular fashion, and ease the distribution of the code. The behavior implemented by a library can be connected to the program at different program lifecycle phases. If the code of the library is accessed during the build of the invoking program, an alternative is to build the executable of the invoking program and distribute that, independently of the library implementation. The library behavior is connected after the executable has been invoked to be executed, either as part of the process of starting the execution, in this case the library is called a dynamic library. A dynamic library can be loaded and linked when preparing a program for execution, alternatively, in the middle of execution, an application may explicitly request that a module be loaded. Most compiled languages have a library although programmers can also create their own custom libraries. Most modern software systems provide libraries that implement the majority of the system services, such libraries have commoditized the services which a modern application requires. As such, most code used by modern applications is provided in these system libraries, the earliest programming concepts analogous to libraries were intended to separate data definitions from the program implementation. JOVIAL brought the COMPOOL concept to popular attention in 1959, although it adopted the idea from the large-system SAGE software, COBOL also included primitive capabilities for a library system in 1959, but Jean Sammet described them as inadequate library facilities in retrospect. Another major contributor to the library concept came in the form of the subprogram innovation of FORTRAN

Computer process
–
In computing, a process is an instance of a computer program that is being executed. It contains the code and its current activity. Depending on the system, a process may be made up of multiple threads of execution that execute instructions concurrently. A computer program is a collection of instructions, while a process is the actual execution of

1.
A list of processes as displayed by htop

Version 7 Unix
–
Seventh Edition Unix, also called Version 7 Unix, Version 7 or just V7, was an important early release of the Unix operating system. V7, released in 1979, was the last Bell Laboratories release to see widespread distribution before the commercialization of Unix by AT&T Corporation in the early 1980s, V7 was originally developed for Digital Equipmen

1.
Version 7 Unix for the PDP-11, running in the SIMH PDP-11 simulator

Unix
–
Among these is Apples macOS, which is the Unix version with the largest installed base as of 2014. Many Unix-like operating systems have arisen over the years, of which Linux is the most popular, Unix was originally meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-progra

1.
Ken Thompson (sitting) and Dennis Ritchie working together at a PDP-11

Operating system
–
An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require a system to function. Operating systems are found on many devices that contain a computer – from cellular phones, the dominant desktop operating system is

1.
OS/360 was used on most IBM mainframe computers beginning in 1966, including computers used by the Apollo program.

3.
The first server for the World Wide Web ran on NeXTSTEP, based on BSD

Linux
–
Linux is a Unix-like computer operating system assembled under the model of free and open-source software development and distribution. The defining component of Linux is the Linux kernel, an operating system kernel first released on September 17,1991 by Linus Torvalds, the Free Software Foundation uses the name GNU/Linux to describe the operating

1.
Linus Torvalds, principal author of the Linux kernel

2.
Ubuntu, a popular Linux distribution

3.
5.25-inch floppy discs holding a very early version of Linux

4.
Nexus 5 running Android

MacOS
–
Within the market of desktop, laptop and home computers, and by web usage, it is the second most widely used desktop OS after Microsoft Windows. Launched in 2001 as Mac OS X, the series is the latest in the family of Macintosh operating systems, Mac OS X succeeded classic Mac OS, which was introduced in 1984, and the final release of which was Mac

1.
Mac OS

PC DOS 2.0
–
IBM PC DOS is a discontinued operating system for the IBM Personal Computer, manufactured and sold by IBM from the 1981 into the 2000s. Before version 6.1, PC DOS was an IBM-branded version of MS-DOS, from version 6.1 on, PC DOS became IBMs independent product. The IBM task force assembled to develop the PC decided that critical components of the m

1.
User manual and diskette for IBM PC DOS 1.1

2.
PC DOS (IBM DOS)

Microsoft Windows
–
Microsoft Windows is a metafamily of graphical operating systems developed, marketed, and sold by Microsoft. It consists of families of operating systems, each of which cater to a certain sector of the computing industry with the OS typically associated with IBM PC compatible architecture. Active Windows families include Windows NT, Windows Embedde

1.
Screenshot of Windows 10, showing the Action Center and Start Menu

OS/2
–
OS/2 is a series of computer operating systems, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for Operating System/2, because it was introduced as part of the generation change release as IBMs Personal System/2 line of second-generation personal computers. The first version of OS/2 was released in

1.
Installation Disk A of Microsoft OS/2 1.3 (3.5" floppy disk)

2.
OS/2 Warp 4 desktop. This version was released on 25 September 1996.

3.
An ATM in Australia running OS/2 Warp

Unix-like
–
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-like application is one that behaves like the corresponding Unix command or shell, there is no standard for defining the term, and some difference of op

1.
Richard Stallman, founder of the GNU Project and the free software movement

2.
Evolution of Unix and Unix-like systems, starting in 1969

Command shell
–
In computing, a shell is a user interface for access to an operating systems services. In general, operating system shells use either a command-line interface or graphical user interface, depending on a computers role and it is named a shell because it is a layer around the operating system kernel. The design of a shell is also dictated by the empl

1.
A graphical interface from the 1990s, which features a TUI window for a man page. Another text window for a Unix shell is partially visible.

Bash (Unix shell)
–
Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. First released in 1989, it has been distributed widely as the shell for Linux distributions. A version is available for Windows 10, Bash is a command processor that typically runs in a text window, where the user t

1.
Screenshot of a Bash session

Env
–
Env is a shell command for Unix and Unix-like operating systems. It is used to print a list of environment variables or run another utility in an altered environment without having to modify the currently existing environment. Using env, variables may be added or removed, and existing variables may be changed by assigning new values to them, in pra

Shell script
–
A shell script is a computer program designed to be run by the Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages, typical operations performed by shell scripts include file manipulation, program execution, and printing text. A script which sets up the environment, runs the program

1.
Editing a FreeBSD shell script for configuring ipfirewall

COMMAND.COM
–
COMMAND. COM is the default operating system shell for DOS operating systems and the default command line interpreter on Windows 95, Windows 98 and Windows ME. COMMAND. COMs successor on OS/2 and Windows NT systems is CMD. EXE, COMMAND. COM is also available on IA-32 versions of those systems to provide compatibility when running DOS applications w

1.
COMMAND.COM

Windows registry
–
The Registry is a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the Registry. The kernel, device drivers, services, Security Accounts Manager, the Registry also allows access to counters for profiling system performance. In simple terms, The Registry or Windows R

1.
"Registry Editor" in Windows 10

Command line
–
A program which handles the interface is called a command language interpreter or shell. The interface is implemented with a command line shell, which is a program that accepts commands as text input. Command-line interfaces to computer operating systems are widely used by casual computer users. Alternatives to the line include, but are not limited

1.
Screenshot of Apple Computer 's CommandShell in A/UX 3.0.1

2.
Screenshot of a sample bash session in GNOME Terminal 3, Fedora 15

Windows PowerShell
–
PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language built on the. NET Framework. Initially a Windows component only, PowerShell was made open-source and cross-platform on 18 August 2016, in PowerShell, administrative tasks are generally performed

Bourne shell
–
The Bourne shell is a shell, or command-line interpreter, for computer operating systems. The Bourne shell was the shell for Version 7 Unix. Most Unix-like systems continue to have /bin/sh—which will be the Bourne shell, developed by Stephen Bourne at Bell Labs, it was a replacement for the Thompson shell, whose executable file had the same name—sh

1.
Bourne shell interaction on Version 7 Unix

Korn shell
–
KornShell is a Unix shell which was developed by David Korn at Bell Labs in the early 1980s and announced at USENIX on July 14,1983. The initial development was based on Bourne shell source code, other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs- and vi-style line editing modes code, respectively. K

1.
Interaction with pdksh in OpenBSD (default shell)

C shell
–
The C shell is a Unix shell created by Bill Joy while he was a graduate student at University of California, Berkeley in the late 1970s. It has been distributed, beginning with the 2BSD release of the Berkeley Software Distribution that Joy began distributing in 1978. Other early contributors to the ideas or the code were Michael Ubell, Eric Allman

1.
tcsh and sh side-by-side on a Mac OS X desktop.

Unix shell
–
A Unix shell is a command-line interpreter or shell that provides a traditional Unix-like command line user interface. Users direct the operation of the computer by entering commands as text for a command line interpreter to execute, users typically interact with a Unix shell using a terminal emulator, however, direct operation via serial hardware

1.
tcsh and sh shell windows on an OS X desktop

User (computing)
–
A user is a person who uses a computer or network service. Users generally use a system or a product without the technical expertise required to fully understand it. Power users use advanced features of programs, though they are not necessarily capable of computer programming, a user often has a user account and is identified to the system by a use

1.
Within a software program or website, a user is often represented by an icon similar to this.

File system
–
In computing, a file system or filesystem is used to control how data is stored and retrieved. Without a file system, information placed in a storage medium would be one large body of data with no way to tell where one piece of information stops, by separating the data into pieces and giving each piece a name, the information is easily isolated and

1.
Directory listing in a Windows command shell

Computer terminal
–
A computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system. The function of a terminal is confined to display and input of data, a terminal that depends on the host computer for its processing power is called a dumb terminal or thin client

1.
The DEC VT100, a widely emulated computer terminal

2.
A Teletype Model 33 ASR teleprinter, usable as a terminal

3.
A Televideo ASCII character mode terminal, using a microprocessor, manufactured around 1982

Terminal emulator
–
A terminal emulator, terminal application, term, or tty for short, is a program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the terminal covers all remote terminals. A terminal emulator inside a graphical interface is often called a terminal window. A terminal win

1.
xterm, a popular terminal emulator designed for the X Window System

Vt100
–
The VT100 is a video terminal, introduced in August 1978 by Digital Equipment Corporation. This led to rapid uptake of the ANSI standard, becoming the de facto standard for terminal emulators, the VT100s, especially the VT102, was extremely successful in the market, and made DEC the leading terminal vendor. The VT100 series was replaced by the VT20

1.
DEC VT100 terminal

2.
VT101

Dumb terminal
–
A computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system. The function of a terminal is confined to display and input of data, a terminal that depends on the host computer for its processing power is called a dumb terminal or thin client

1.
The DEC VT100, a widely emulated computer terminal

2.
A Teletype Model 33 ASR teleprinter, usable as a terminal

3.
A Televideo ASCII character mode terminal, using a microprocessor, manufactured around 1982

Path (computing)
–
A path, the general form of the name of a file or directory, specifies a unique location in a file system. The delimiting character is most commonly the slash, the character, or colon. Paths are used extensively in science to represent the directory/file relationships common in modern operating systems. Resources can be represented by either absolu

1.
Screenshot of a Windows command shell showing filenames in a directory

DOS
–
None of these systems were officially named DOS, and indeed DOS is a general term for disk operating system. MS-DOS dominated the IBM PC compatible market between 1981 and 1995, and Microsoft Windows, still ran on top of it until about 2001, dozens of other operating systems also use the acronym DOS, including DOS/360 from 1966. Others are Apple DO

1.
FreeDOS screenshot showing the command line interface, directory structure and version information.

Windows
–
Microsoft Windows is a metafamily of graphical operating systems developed, marketed, and sold by Microsoft. It consists of families of operating systems, each of which cater to a certain sector of the computing industry with the OS typically associated with IBM PC compatible architecture. Active Windows families include Windows NT, Windows Embedde

1.
Screenshot of Windows 10, showing the Action Center and Start Menu

X11
–
The X Window System is a windowing system for bitmap displays, common on UNIX-like computer operating systems. X provides the framework for a GUI environment, drawing and moving windows on the display device and interacting with a mouse. X does not mandate the user interface – this is handled by individual programs, as such, the visual styling of X

1.
A Network Computing Devices NCD-88k X terminal

2.
A historical example of graphical user interface and applications common to the MIT X Consortium's distribution running under the twm window manager: X Terminal, Xbiff, xload and a graphical manual page browser

Shared object
–
In computer science, a library is a collection of non-volatile resources used by computer programs, often to develop software. These may include data, documentation, help data, message templates, pre-written code. In IBMs OS/360 and its successors they are referred to as partitioned data sets, a library is also a collection of implementations of be

1.
Illustration of an application which uses libvorbisfile to play an Ogg Vorbis file