On Sat, Mar 10, 2007 at 07:05:44PM +0200, Andrew Kornilov wrote: > Dmitry V. Levin wrote: > > Честно говоря, меня не радует необходимость пробивать полный путь к > > утилитам. В /etc/init.d/functions есть функция absolute(), с помощью > > которой можно обойтись именами утилит в сочетании с правильным PATH'ом. > > > > Думаю что для etcnet можно "изобрести" разновидность этой функции, которая > > бы ничего не выводила в stderr, с тем чтобы использовать её таким образом: > > DEFAULT_BRCTL="$(absolute bctrl)" > > > Спасибо, идея хорошая, глянем, как лучше сделать. Вроде бы проблем > возникнуть не должно. Но как лучше реагировать на отсутствие утилиты? Можно сделать так, чтобы в случае отсутствия утилиты функция absolute() возвращала переданный ей параметр: absolute() { local path [ -n "${1:-}" ] || return 1 if ! path="$(type -p "$1" 2>/dev/null)" || [ "$path" = "${path#/}" ]; then printf %s "$1" return 1 fi printf %s "$path" } Правда тогда придётся заменять проверки вида [ -x "$f" ] на более сложные [ "$f" != "${f#/" -a -x "$f" ] -- ldv