Скомпилированный GNU / Nano: Как добавить в список системных редакторов

Альтернативой связыванию команд вместе с && может быть запуск сценария, раздела сценария или суб-оболочки с установленной опцией -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 от выполнения, перезагрузки от выполнения или для автоматического восстановления удаления файла. Также обратите внимание, что вывод на терминал также не находится в руках оболочки и не может быть отозван.

1
05.04.2017, 18:09
1 ответ

Проверьте, что делает пакет в его 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).

2
27.01.2020, 23:34

Теги

Похожие вопросы