As in
2a5fcfae024ffc370bb780572279f45a1da3f946
and in
3e67e5c9928f8b1e1c5a63def88d53ed1fed12eb
using /usr/bin/env allows bash to be looked up in PATH
rather than being hard-coded.
As with the previous changes the same arguments apply
- distributions have scripts to rewrite shebangs on installation and
they know what locations to rely on.
- For tests/compilation we should rather rely on the user to have setup
there PATH correctly.
In particular this makes testing from git easier on NixOS where do not provide
/bin/bash to improve compose-ability.
-#!/bin/bash -e
+#!/usr/bin/env bash
+set -e
cflags=CFLAGS="$CFLAGS"
cxxflags=CXXFLAGS="$CXXFLAGS"
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# SPDX-License-Identifier: LGPL-2.1+
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Basic systemd setup"
RUN_IN_UNPRIVILEGED_CONTAINER=${RUN_IN_UNPRIVILEGED_CONTAINER:-yes}
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="cryptsetup systemd setup"
TEST_NO_NSPAWN=1
-#!/bin/bash -ex
+#!/usr/bin/env bash
+set -ex
# Test merging of a --job-mode=ignore-dependencies job into a previously
# installed job.
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Job-related tests"
TEST_NO_QEMU=1
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Journal-related tests"
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Resource limits-related tests"
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="SELinux tests"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/1981"
TEST_NO_QEMU=1
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2730"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2691"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2467"
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3166"
TEST_NO_NSPAWN=1
cat >$initdir/test-fail-on-restart.sh <<'EOF'
-#!/bin/bash -x
+#!/usr/bin/env bash
+set -x
systemctl start fail-on-restart.service
active_state=$(systemctl show --property ActiveState fail-on-restart.service)
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171"
TEST_NO_QEMU=1
EOF
cat >$initdir/test-socket-group.sh <<'EOF'
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
set -u
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="systemd-nspawn smoke test"
TEST_NO_NSPAWN=1
EOF
cat >$initdir/test-nspawn.sh <<'EOF'
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -u
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="/etc/machine-id testing"
TEST_NO_NSPAWN=1
EOF
cat >$initdir/test-machine-id-setup.sh <<'EOF'
-#!/bin/bash
+#!/usr/bin/env bash
set -e
set -x
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Dropin tests"
TEST_NO_QEMU=1
-#!/bin/bash
+#!/usr/bin/env bash
set -v -x
rm -f /test.log
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="EXTEND_TIMEOUT_USEC=usec start/runtime/stop tests"
SKIP_INITRD=yes
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="UDEV SYSTEMD_WANTS property"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="FailureAction= operation"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test cgroup delegation in the unified hierarchy"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test changing main PID"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
test `systemctl show -p MainPID --value testsuite.service` -eq $$
cat >/tmp/mainpid.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
set -o pipefail
test `systemctl show -p MainPID --value mainpidsh.service` -eq `cat /run/mainpidsh/pid`
cat >/tmp/mainpid2.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
set -o pipefail
test `systemctl show -p MainPID --value mainpidsh2.service` -eq `cat /run/mainpidsh2/pid`
cat >/dev/shm/mainpid3.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Sysuser-related tests"
-#!/bin/bash
+#!/usr/bin/env bash
set -x
set -e
-#!/bin/bash
+#!/usr/bin/env bash
set -e
set -x
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Tmpfiles related tests"
TEST_NO_QEMU=1
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test Type=exec"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Run unit tests under containers"
RUN_IN_UNPRIVILEGED_CONTAINER=yes
-#!/bin/bash
+#!/usr/bin/env bash
#set -ex
#set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test importd"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test setenv"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test StandardOutput=file:"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Ensure %j Wants directives work"
RUN_IN_UNPRIVILEGED_CONTAINER=yes
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="UDEV ID_RENAMING property"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test OnClockChange= + OnTimezoneChange="
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="plugged -> dead -> plugged issue #11997"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -e
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test OOM killer logic"
TEST_NO_NSPAWN=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
set -e
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
set -ex
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test migrating state directory from DynamicUser=1 to DynamicUser=0 and back"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="network-generator tests"
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test MUMAPolicy= and NUMAMask= options"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
set -e
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
set -ex
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Test ExecReload= (PR #13098)"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test ExecXYZEx= service unit dbus hookups"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Test oneshot unit restart on failure"
. $TEST_BASE_DIR/test-functions
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test that ExecStopPost= is always run"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
systemd-analyze log-level debug
test -f /run/exec2
cat > /tmp/forking1.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
test -f /run/forking1
cat > /tmp/forking2.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
test -f /run/dbus2
cat > /tmp/notify1.sh <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -eux
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="Test PrivateUsers=yes on user manager"
. $TEST_BASE_DIR/test-functions
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test log namespaces"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
systemd-analyze log-level debug
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="test systemd-repart"
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
# Check if repart is installed, and if it isn't bail out early instead of failing
-#!/bin/bash
+#!/usr/bin/env bash
set -e
TEST_DESCRIPTION="testing homed"
TEST_NO_QEMU=1
-#!/bin/bash
+#!/usr/bin/env bash
set -ex
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
fd=0
OPTIND=1
-#!/bin/bash -e
+#!/usr/bin/env bash
+set -e
BUILD_DIR="$($(dirname "$0")/../tools/find-build-dir.sh)"
if [ $# -gt 0 ]; then
-#!/bin/bash -e
+#!/usr/bin/env bash
+set -e
out="$1"
systemd_efi="$2"
-#!/bin/bash
+#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[ "$SYSTEMD_NSPAWN" ] || SYSTEMD_NSPAWN=$(which -a $BUILD_DIR/systemd-nspawn systemd-nspawn 2>/dev/null | grep '^/' -m1)
[ "$JOURNALCTL" ] || JOURNALCTL=$(which -a $BUILD_DIR/journalctl journalctl 2>/dev/null | grep '^/' -m1)
-BASICTOOLS="test sh bash setsid loadkeys setfont login sulogin gzip sleep echo head tail cat mount umount cryptsetup date dmsetup modprobe sed cmp tee rm true false chmod chown ln xargs"
+BASICTOOLS="test env sh bash setsid loadkeys setfont login sulogin gzip sleep echo head tail cat mount umount cryptsetup date dmsetup modprobe sed cmp tee rm true false chmod chown ln xargs"
DEBUGTOOLS="df free ls stty ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname find vi mv"
STATEDIR="${BUILD_DIR:-.}/test/$(basename $(dirname $(realpath $0)))"
local _valgrind_wrapper=$initdir/$ROOTLIBDIR/systemd-under-valgrind
ddebug "Create $_valgrind_wrapper"
cat >$_valgrind_wrapper <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
mount -t proc proc /proc
exec valgrind --leak-check=full --log-file=/valgrind.out $ROOTLIBDIR/systemd "\$@"
esac
cat >$_asan_wrapper <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
set -x
local _strace_wrapper=$initdir/$ROOTLIBDIR/systemd-under-strace
ddebug "Create $_strace_wrapper"
cat >$_strace_wrapper <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
exec strace -D -o /strace.out $ROOTLIBDIR/systemd "\$@"
EOF
create_rc_local() {
mkdir -p $initdir/etc/rc.d
cat >$initdir/etc/rc.d/rc.local <<EOF
-#!/bin/bash
+#!/usr/bin/env bash
exit 0
EOF
chmod 0755 $initdir/etc/rc.d/rc.local
-#!/bin/bash
+#!/usr/bin/env bash
set -e
which perl &>/dev/null || exit 77
-#!/bin/bash
+#!/usr/bin/env bash
# The official unmodified version of the script can be found at
# https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh
-#!/bin/bash
+#!/usr/bin/env bash
set -eu
set -o pipefail
-#!/bin/bash
+#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1+
set -ex