Shell prompts


Powerline daemon is not run automatically by any of my bindings. It is advised to add

powerline-daemon -q

before any other powerline-related code in the shell configuration file.

Bash prompt

Add the following line to the bashrc, where {repository_root} is the absolute path to the Powerline installation directory:

. {repository_root}/powerline/bindings/bash/


Since without powerline daemon bash bindings are very slow PS2 (continuation) and PS3 (select) prompts are not set up. Thus it is advised to use

powerline-daemon -q
. {repository_root}/powerline/bindings/bash/

in the bash configuration file. Without POWERLINE_BASH_* variables PS2 and PS3 prompts are computed exactly once at bash startup.


At maximum bash continuation PS2 and select PS3 prompts are computed each time main PS1 prompt is computed. Thus putting e.g. current time into PS2 or PS3 prompt will not work as expected.

At minimum they are computed once on startup.

Zsh prompt

Add the following line to the zshrc, where {repository_root} is the absolute path to the Powerline installation directory:

. {repository_root}/powerline/bindings/zsh/powerline.zsh

Fish prompt

Add the following line to, where {repository_root} is the absolute path to the Powerline installation directory:

set fish_function_path $fish_function_path "{repository_root}/powerline/bindings/fish"


Fish is supported only starting from version 2.1.

Rcsh prompt

Powerline supports Plan9 rc reimplementation by Byron Rakitzis packaged by many *nix distributions. To use it add

. {repository_root}/powerline/bindings/rc/powerline.rc

to rcrc file (usually ~/.rcrc) and make sure rc is started as a login shell (with -l argument): otherwise this configuration file is not read.


Original Plan9 shell and its *nix port are not supported because they are missing prompt special function (it is being called once before each non-continuation prompt). Since powerline could not support shell without this or equivalent feature some other not-so-critical features of that port were used.

Busybox (ash), mksh and dash prompt

After launching busybox run the following command:

. {repository_root}/powerline/bindings/shell/

Mksh users may put this line into ~/.mkshrc file. Dash users may use the following in ~/.profile:

if test "x$0" != "x${0#dash}" ; then
    export ENV={repository_root}/powerline/bindings/shell/


Dash users that already have $ENV defined should either put the . …/shell/ line in the $ENV file or create a new file which will source (using . command) both former $ENV file and files and set $ENV to the path of this new file.


Mksh users have to set $POWERLINE_SHELL_CONTINUATION and $POWERLINE_SHELL_SELECT to 1 to get PS2 and PS3 (continuation and select) prompts support respectively: as command substitution is not performed in these shells for these prompts they are updated once each time PS1 prompt is displayed which may be slow.

It is also known that while PS2 and PS3 update is triggered at PS1 update it is actually performed only next time PS1 is displayed which means that PS2 and PS3 prompts will be outdated and may be incorrect for this reason.

Without these variables PS2 and PS3 prompts will be set once at startup. This only touches mksh users: busybox and dash both have no such problem.


Job count is using some weird hack that uses signals and temporary files for interprocess communication. It may be wrong sometimes. Not the case in mksh.


Busybox has two shells: ash and hush. Second is known to segfault in busybox 1.22.1 when using script.