Upstart был заброшен разработчиками, когда Ubuntu перешел на systemd, и был удален из Debian перед выпуском Debian 9.
Поддерживаемые системы инициализации в Debian 9 — это systemd, sysvinit
и (, в гораздо меньшей степени)Runit , file-rc
и openrc
. Если вы хотите использовать systemd (, который по умолчанию является ), убедитесь, что пакеты systemd
и systemd-sysv
установлены; чтобы использовать sysvinit
, установите initscripts
, sysv-rc
и sysvinit-core
.
Я не рекомендую использовать Upstart, так как он содержал ряд -критических ошибок, когда он был удален.
Параметр оболочки pipefail
специфичен для ряда оболочек, которые shellcheck
утверждают, что поддерживают 1 . Вы можете использовать эту опцию оболочки и быть переносимой, если под «переносимостью» вы предполагаете, что любая целевая система имеет оболочку, которая поддерживает ее (и любые другие конструкции, которые вы можете использовать ). Это тот же тип «переносимости», который вы получаете с любым другим конкретным языком сценариев.
Линтер shellcheck
будет жаловаться, если обнаружит set -o pipefail
в сценарии оболочки, который является сценарием sh
, так как в настоящее время он не поддерживается POSIX sh
.
Чтобы убедиться, что ваш сценарий интерпретируется оболочкой bash
(или какой-либо конкретной оболочкой, для которой вы пишете код ), в сценарии должна быть строка #!
-, указывающая на правильный интерпретатор оболочки, например,
#!/bin/bash
или, возможно,
#!/usr/bin/env bash
или что-то подобное.
С правильной строкой #!
-, которая дополнительно указывает, что скрипт будет интерпретироваться конкретной оболочкой, отличной от sh
, линтер shellcheck
не будет жаловаться на то, что вы установили параметр оболочки pipefail
в своем скрипте..
Если вы не используете строку#!
-в своих сценариях, вам следует подумать об этом (или всегда запускать свои сценарии с явным интерпретатором в командной строке ). Между тем, инструменту командной строки shellcheck
можно приказать переключиться в режим, используя его параметр-s
(или--shell=
):
shellcheck --shell=bash myscript
1Я подозреваю, что shellcheck
имеет «режим POSIX sh
» и «другой режим» для поддержки bash
, dash
иksh
(shellcheck
не претендует на поддержкуzsh
). Параметр оболочки pipefail
задокументирован для работы с bash
и ksh
. Оболочка zsh
имеет параметр оболочки PIPE_FAIL
, который можно установить таким же образом. Оболочка dash
не поддерживает эту опцию, но если в строке#!
-упоминается dash
, shellcheck
не будет жаловаться на pipefail
.
Параметр pipefail
взят из ksh93, а также присутствует в нескольких других оболочках. Было добавлено:
Запрос на добавление его в стандарт POSIX был отправлен в 2013 г., а резолюция принята в 2019 г. Таким образом, он будет включен в следующую основную редакцию стандарта, которая должна быть выпущена в ближайшее время (не позднее 2022 г. ).
Для оставшихся реализаций (, в основном основанных на dash, bosh и ksh88 -оболочках ), вероятно, потребуется еще некоторое время, чтобы добавить его поддержку. После чего часы «EOL» начнут тикать, и через 10 лет вы сможете предположить, что все реализации sh в поддерживаемых в настоящее время системах будут его поддерживать.