On Wed, Oct 02, 2019 at 11:15:24AM +0300, Andrey Jr. Melnikov wrote: > Victor Wagner <vi...@wagner.pp.ru> wrote: > > On Tue, 1 Oct 2019 12:48:42 +0300 > > "Andrey Jr. Melnikov" <temnota...@gmail.com> wrote: > > > > Victor Wagner <vi...@wagner.pp.ru> wrote: > > > > On Tue, 1 Oct 2019 11:11:48 +0300 > > > > "Andrey Jr. Melnikov" <temnota...@gmail.com> wrote: > > > > > > > > > > > Дак а кто автору злобный буратино, что он не пользует конструкцию > > > > > > > > > > _pacman=$(command -v pacman) > > > > > if [ -n "${_pacman}" -a .... ]; ... > > > > > > > Ну зачем так сложно? > > > Затем, что потом сразу можно вызвать ${_pacman} -- ${file} без > > > повторного поиска по дискам в $PATH - а где там тот pacman лежало. > > > > > > > Ведь command -v возвращает ненулевой код если команда не найдена. > > > > Я ведь с самого начала про то и пишу, что НЕ ИСПОЛЬЗУЙТЕ КОМАНДУ > > > > test, для того чтобы проверить условие, уже проверенное другое > > > > командой. > > > > > > О, расскажи как мне, как в > > > if /usr/bin/неведомафигня ; then > > > обработать вот это: > > > /usr/bin/неведомафигня: cannot execute binary file: Exec format error > > А нам оно в данном случае надо? > Надо. Т.к. я знаю, что /usr/bin/неведомафигня должна сделать или exit(0) или > exit(1). А в противном случае - надо громко обругаться и упасть прямо тут, > а не считать, что у нас был вариант exit(1).
Ошибка "exec format error" это ошибка времени выполнения, и она ничем не лучше и не хуже других аналогичных ошибок (не оказалось либы на месте, занят сегмент shm, забайнден сокет на нужном порту и т.п.), независимо от того, возникают они на этапе работы загрузчика или после передачи управления в программу. Если их хочется все до одной ловить -- пишите свою запускалку, свой супервизор, или даже целую систему виртуализации. > > Бывают такие ошибки которые НЕ НАДО обрабатывать. Ежели юзер сумел > > загнать свою систему в такое состояние, он сам себе злобный Билл Гейтс. > Да? и флешки не глючат? и с дисков читается всё всегда и так-как-записали? > пришибло OOM'ом/SIGSEGV или ещё какой невозможной в этой вселенной вещью? Это не ошибки конфигурации, поэтому обрабатывать их должен не шелл. Шелл он для того, чтобы утилиту запустить. Возможно, задав предварительно разные ulimit'ы и переменные окружения. И на этом его функционал целесообразно ограничить, здесь я с Витусом полностью согласен. -- Eugene Berdnikov