#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-491

### Chapter 7. Shells

- Prev

  Tcsh-6.24.16

- Next

  Virtualization

- Up
- Home

# zsh-5.9

## Introduction to zsh

The zsh package contains a command interpreter (shell) usable as an interactive login shell and as a shell script command processor. Of the standard shells, zsh most closely resembles ksh but includes many enhancements.

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://www.zsh.org/pub/zsh-5.9.tar.xz

- Download MD5 sum: 182e37ca3fe3fa6a44f69ad462c5c30e

- Download size: 3.2 MB

- Estimated disk space required: 48 MB (includes documentation and tests)

- Estimated build time: 1.6 SBU (Using parallelism=4; includes documentation and tests)

### Note

When there is a new zsh release, the old files shown above are moved to a new server directory: https://www.zsh.org/pub/old/.

### zsh Dependencies

#### Optional

Valgrind-3.26.0 and yodl

## Installation of zsh

Adapt the documentation build system for texinfo-7.0 or later:

    sed -e 's/set_from_init_file/texinfo_&/' \
        -i Doc/Makefile.in

Some programs shipped in the building system for detecting system features use pre-C99 syntax rejected by GCC-14.1 and later. Fix them because Zsh will be configured incorrectly and fail to build otherwise:

    sed -e 's/^main/int &/'      \
        -e 's/exit(/return(/'    \
        -i aczsh.m4 configure.ac &&

    sed -e 's/test = /&(char**)/' \
        -i configure.ac           &&

    autoconf

The documentation files contain references to zsh configuration files in `/etc`, but we'll use `/etc/zsh` to hold these configuration files instead. The build system will update those references if the yodl package is available, but it's out of the scope of BLFS. As a result, we need to fix the references manually:

    sed -e 's|/etc/z|/etc/zsh/z|g' \
        -i Doc/*.*

Install zsh by running the following commands:

    ./configure --prefix=/usr            \
                --sysconfdir=/etc/zsh    \
                --enable-etcdir=/etc/zsh \
                --enable-cap             \
                --enable-gdbm            &&
    make                                 &&

    makeinfo  Doc/zsh.texi --html      -o Doc/html &&
    makeinfo  Doc/zsh.texi --plaintext -o zsh.txt  &&
    makeinfo  Doc/zsh.texi --html --no-split --no-headers -o zsh.html

If you have texlive-20250308 installed, you can build the documentation in PDF format by issuing the following command:

    texi2pdf  Doc/zsh.texi -o Doc/zsh.pdf

To test the results, issue: make check.

Now, as the `root` user:

    make install                                                    &&
    make infodir=/usr/share/info install.info                       &&
    make htmldir=/usr/share/doc/zsh-5.9/html install.html           &&
    install -v -m644 zsh.{html,txt} Etc/FAQ /usr/share/doc/zsh-5.9

If you built the PDF format of the documentation, install it by issuing the following command as the `root` user:

    install -v -m644 Doc/zsh.pdf /usr/share/doc/zsh-5.9

## Command Explanations

`--sysconfdir=/etc/zsh` and `--enable-etcdir=/etc/zsh`: These parameters are used so that all the zsh configuration files are consolidated into the `/etc/zsh` directory. Omit these parameters if you wish to retain historical compatibility by having all the files located in the `/etc` directory.

`--enable-cap`: This option enables POSIX capabilities.

`--enable-gdbm`: This option enables the use of the GDBM library.

## Configuring zsh

### Config Files

There are a whole host of configuration files for zsh including `/etc/zsh/zshenv`, `/etc/zsh/zprofile`, `/etc/zsh/zshrc`, `/etc/zsh/zlogin` and `/etc/zsh/zlogout`. You can find more information on these in the zsh(1) and related manual pages.

The first time zsh is executed, you will be prompted by messages asking several questions. The answers will be used to create a `~/.zshrc` file. If you wish to run these questions again, run zsh /usr/share/zsh/5.9/functions/zsh-newuser-install -f.

There are several built-in advanced prompts. In the zsh shell, start advanced prompt support with autoload -U promptinit, then promptinit. Available prompt names are listed with prompt -l. Select a particular one with prompt `<prompt-name>`. Display all available prompts with prompt -p. Except for the list and display commands above, you can insert the other ones in `~/.zshrc` to be automatically executed when the shell starts, with the prompt you chose.

### Configuration Information

Update `/etc/shells` to include the zsh shell program names (as the `root` user):

    cat >> /etc/shells << "EOF"
    /bin/zsh
    EOF

## Contents

Installed Programs: zsh and zsh-5.9 (hardlinked to each other)
Installed Libraries: Numerous plugin helper modules under /usr/lib/zsh/5.9/
Installed Directories: /usr/{lib,share}/zsh and /usr/share/doc/zsh-5.9

### Short Description

zsh | is a shell which has command-line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and a host of other features

- Prev

  Tcsh-6.24.16

- Next

  Virtualization

- Up
- Home