SYSTEMD.ENVIRONMENT-GENERATOR(7) systemd.environment-generator systemd.environment-generator - systemd /usr/lib/systemd/system-environment-generators/some-generator /usr/lib/systemd/user-environment-generators/some-generator /run/systemd/system-environment-generators/* /etc/systemd/system-environment-generators/* /usr/local/lib/systemd/user-environment-generators/* /usr/lib/systemd/system-environment-generators/* /run/systemd/user-environment-generators/* /etc/systemd/user-environment-generators/* /usr/local/lib/systemd/user-environment-generators/* /usr/lib/systemd/user-environment-generators/* /usr/lib/systemd/system-environment-generators/ . systemd(1) systemd.generator(7) . . . system-environment-generators/ user-environment-generators/ . [1]. /dev/null . /run/ /etc/. systemctl daemon-reload. . . systemd.generator(7) : o . . / . o . . 1. # 50-xdg-data-dirs.sh #!/bin/sh # SPDX-License-Identifier: MIT-0 # set the default value XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share}" # add a directory if it exists if [ -d /opt/foo/share ]; then XDG_DATA_DIRS="/opt/foo/share:${XDG_DATA_DIRS}" fi # write our output echo "XDG_DATA_DIRS=${XDG_DATA_DIRS}" 2. # 90-rearrange-path.py #!/usr/bin/python # SPDX-License-Identifier: MIT-0 """ systemd bin sbin . ( /sbin:/bin:/foo/bar /bin:/sbin:/foo/bar.) . bash Python . """ import os import pathlib def rearrange_bin_sbin(path): """Make sure any pair of .../bin, .../sbin directories is in this order >>> rearrange_bin_sbin('/bin:/sbin:/usr/sbin:/usr/bin') '/bin:/sbin:/usr/bin:/usr/sbin' """ items = [pathlib.Path(p) for p in path.split(':')] for i in range(len(items)): if 'sbin' in items[i].parts: ind = items[i].parts.index('sbin') bin = pathlib.Path(*items[i].parts[:ind], 'bin', *items[i].parts[ind+1:]) if bin in items[i+1:]: j = i + 1 + items[i+1:].index(bin) items[i], items[j] = items[j], items[i] return ':'.join(p.as_posix() for p in items) if __name__ == '__main__': path = os.environ['PATH'] # This should be always set. # If it is not, we will just crash, which is OK too. new = rearrange_bin_sbin(path) if new != path: print('PATH={}'.format(new)) 3. SYSTEMD_LOG_LEVEL=debug VAR_A=something VAR_B="something else" \ /usr/lib/systemd/system-environment-generators/path-to-generator systemd-environment-d-generator(8) systemd.generator(7) systemd(1) systemctl(1) 1. . /usr/local/ . 3 . . : . systemd 260.2 SYSTEMD.ENVIRONMENT-GENERATOR(7)