Альтернативой связыванию команд вместе с &&
может быть запуск сценария, раздела сценария или суб-оболочки с установленной опцией -e
( set -e
, иногда называемый опцией errexit
). Это привело бы к тому, что сценарий или вспомогательная оболочка просто завершили работу при ошибке:
( set -e
command1
command2
command3 )
Что касается отката уже выполненных шагов, это, вероятно, невозможно выполнить в сценарии оболочки.
Возьмем, к примеру, сценарий, который выполняет exit
или перезагрузку системы, или даже манипулирует данными на диске:
( set -e
if (( $# == 0 )); then
echo "No command line arguments!" >&2
exit
fi
echo "We're cool"
false )
( set -e
case "$cmd" in
restart) sudo reboot ;;
greet) echo "Hi there" ;;
*) echo "Huh?" ;;
esac
false )
( set -e
rm -f /tmp/important_tmp_file
echo "oh oh"
false )
Не будет никакого способа отката exit
от выполнения, перезагрузки от выполнения или для автоматического восстановления удаления файла. Также обратите внимание, что вывод на терминал также не находится в руках оболочки и не может быть отозван.
Проверьте, что делает пакет в его postinst
:
update-alternatives --install /usr/bin/editor editor /bin/nano 40 \
--slave /usr/share/man/man1/editor.1.gz editor.1.gz \
/usr/share/man/man1/nano.1.gz
Это устанавливает /bin/nano
в качестве альтернативы для /usr/bin/editor
(альтернатива под названием editor
, поэтому /etc/alternatives/editor
), с приоритетом 40, и ассоциирует страницу nano
как альтернативу для страницы editor
. Таким образом, выбор nano
в качестве сконфигурированной альтернативы автоматически устанавливает страницу руководства в соответствие.
При выполнении этой операции, если альтернатива editor
уже существует, nano
будет добавлен и, если альтернатива находится в автоматическом режиме, выбран, если он имеет наивысший приоритет; если нет, альтернатива будет создана в автоматическом режиме, nano
будет добавлен и выбран.
Так что вам, вероятно, нужно что-то вроде
update-alternatives --install /usr/bin/editor editor /usr/local/bin/nano 100
(предполагается, что вы хотите автоматически выбрать nano
; самый высокий приоритет для редактора в Debian - 70, так что победит 100).