From ArchWiki
Jump to navigation Jump to search

OSH (Oil Shell) is a Bash-compatible UNIX command-line shell. OSH can be run on most UNIX-like operating systems, including GNU/Linux. It is written in Python (v2.7), but ships with a native executable. The dialect of Bash recognized by OSH is called the OSH language.


Install the oshAUR package.

Smoke Test

Make sure that OSH has been installed correctly by running the following in a terminal:

$> osh

This will start an OSH session and change the shell prompt to:


Identify an installed binary and attempt to invoke it in the OSH session to confirm that the output is correct.

For example:

osh$ ls

Making OSH your default shell

See Command-line shell#Changing your default shell.


Change the default shell before removing the oshAUR package.

Warning: Failure to follow the below procedure may result in users no longer having access to a working shell.

Run following command:

$ chsh -s /bin/bash user

Use it for every user with osh set as their login shell (including root if needed). When completed, the oshAUR package can be removed.

Alternatively, change the default shell back to Bash by editing /etc/passwd as root.

Warning: It is strongly recommended to use vipw when editing /etc/passwd as it helps prevent invalid entries and/or syntax errors.

For example, change the following:

username:x:1000:1000:Full Name,,,:/home/username:/bin/osh

To this:

username:x:1000:1000:Full Name,,,:/home/username:/bin/bash


Reproducible bugs/errors may be reported on Github. When filing a report, please include the output of OSH when it is running in verbose mode. To enable verbose mode, execute the following:

$> export OVM_VERBOSE=1

Assertion `sts != -1' failed

$> osh
osh: Modules/main.c:347: Ovm_Main: Assertion `sts != -1' failed.
Aborted (core dumped)

This error occurs when the OSH binary is stripped. The PKGBUILD file in the AUR explicitly disables binary stripping; however, custom makepkg configuration files may override this option. In the event of this error, attempt to reinstall OSH without any custom configurations.

See also