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

Ответить