Fork us on GitHub Follow us on Facebook Follow us on Twitter


HelenOS is primarily controlled by means of an interactive shell called Bdsh. This sections teaches you the basics of using this shell.

Type help (+Enter) to get a list of built-in commands.


The shell supports common text-editing controls. In addition to that the following controls are defined:

Keystroke Action
Enter Submit and execute the command
Up Arrow Move to older history entry
Down Arrow Move to newer history entry
Tab Complete name of command or file

Other command-line driven applications (e.g. SBI) support exactly the same controls as the shell. (The command-line input is implemented in a common library called CLUI).

Internal Shell Commands

The shell supports a few basic commands which are built into it. (Such as listing directories, creating and moving them, deleting files, etc). Other HelenOS commands are external (i.e. these are executable files on the file system) - this is similar to other operating systems.

To get a list of internal commands supported by the shell enter the command:

# help

External Commands

Most other HelenOS functionality is implemented in regular executable files (external commands), similar to other operating systems. These executables are traditionally divided into two groups: applications and servers.

Servers can be considered similar to UNIX daemons. When you run them in the right way, they will return control to the command line, but continue running in the background. To obtain a list of available servers:

# ls /srv

Applications are regular executables that perform some task and terminate. They can also be interactive applications (e.g. Tetris). To obtain a list of available applications, enter:

# ls /app

To execute a server or application, simply type its name (plus enter) on the command line. (Some servers or apps require command-line arguments, however). To run Tetris, for example, enter:

# tetris

Arguments with spaces

Bdsh supports syntax for passing arguments containing spaces. To enclose such an argument, use single quotes:

# command 'hello world'

Embedding a literal single quote is also supported:

# command 'Joe''s book'

I/O redirection

It is possible to redirect standard input and output of a command from/to a file using the following syntax:

from myinput.txt | command Will execute command with the input taken from file myinput.txt
command | to myoutput.txt Will execute command with its output written to file myoutput.txt
from myinput.txt | command | to myoutput.txt It is possible to redirect input and output at the same time

HelenOS does not support pipes yet, so running command | command etc. is currently not supported.

Last modified 7 years ago Last modified on 2016-04-20T21:01:14Z