В bash вы можно вызвать редактор для текущей командной строки, используя Ctrl + x , Ctrl + e .
В системе у меня есть под рукой, этого нет в документации под man readline
, но есть в man bash
в разделе «readline», поэтому я не уверен, что это bash- специфическая функция, или если другие программы на основе readline будут поддерживать ее.
Вот документация из bash:
edit-and-execute-command
(C-xC-e
)Вызов редактора в текущей командной строке и выполнение результата в виде команд оболочки. Bash пытается вызвать
$ VISUAL
,$ EDITOR
иemacs
как редактор, именно в таком порядке.
Фактически скрипт запущен. Как указал Бигон и в отчете об ошибке, касание
просто не может вступить в силу, потому что файловая система уже смонтирована только для чтения, когда сценарии в / lib / systemd / system-shutdown /
выполняются.
В этом можно убедиться, монтируя и выполняя чтение-запись перед касанием
:
#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /
Теперь / test
действительно появляется после перезагрузки.
Однако это также означает, что запуск моего сценария через эту папку бесполезен, так как это произойдет слишком поздно.
Для записи в файлы журнала и т. Д. Необходимо запустить сценарий раньше через службу, как это было предложено Бигоном . Я объясняю это в Как запустить сценарий при завершении работы в Debian 9 или Raspbian 8 (Джесси) .
Итак, если вы хотите запускать скрипт во время выключения машины, вам нужно добавить .service файл, см: Как запустить сценарий с помощью systemd прямо перед выключением?
/lib/systemd/system-shutdown/
зарезервирован для особых случаев и выполняется в самом конце процедуры выключения/перезагрузки