atf-sh(1)

atf-sh1

Interpreter for shell-based test programs

Usage

atf-sh [-s shell] script

Overview

atf-sh is an interpreter that runs the test program given in script after loading the atf-sh(3) library.

atf-sh is not a real interpreter though: it is just a wrapper around the system-wide shell defined by ATF_SHELL. atf-sh executes the interpreter, loads the atf-sh(3) library and then runs the script. You must consider atf-sh to be a POSIX shell by default and thus should not use any non-standard extensions.

The following options are available:

-s shell

Specifies the shell to use instead of the value provided by ATF_SHELL.

Environment

ATF_LIBEXECDIR

Overrides the builtin directory where atf-sh is located. Should not be overridden other than for testing purposes.

ATF_PKGDATADIR

Overrides the builtin directory where libatf-sh.subr is located. Should not be overridden other than for testing purposes.

ATF_SHELL

Path to the system shell to be used in the generated scripts. Scripts must not rely on this variable being set to select a specific interpreter.

ATF_SHELL

Path to the system shell to be used in the generated scripts.

Examples

Scripts using atf-sh(3) should start with:

#! /usr/bin/env atf-sh

Alternatively, if you want to explicitly choose a shell interpreter, you cannot rely on env(1) to find atf-sh. Instead, you have to hardcode the path to atf-sh in the script and then use the -s option afterwards as a single parameter:

#! /path/to/bin/atf-sh -s/bin/bash

Releases

26 releases since FreeBSD 10.0-RELEASE; the text changed 2 times.

  1. 10.0
  2. 11.0
  3. 11.1–16.0

-s since FreeBSD 11.0-RELEASE.

-h until FreeBSD 10.0-RELEASE.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.