Поскольку другие уже упомянули, if command
тесты, ли command
успешно выполняется.Действительно? [ … ]
обычная команда, которая может использоваться за пределами if
или while
условное выражение, хотя это редко.
Однако для этого приложения, я протестировал бы существование характерных каталогов. Это будет корректно в большем количестве пограничных случаев. Версия Bash/ksh/zsh/dash (не протестирована):
vc=
if [ -d .svn ]; then
vc=svn
elif [ -d CVS ]; then
vc=cvs
else
d=$(pwd -P)
while [ -n "$d" ]; do
if [ -d "$d/.bzr" ]; then
vc=bzr
elif [ -d "$d/_darcs" ]; then
vc=darcs
elif [ -d "$d/.git" ]; then
vc=git
elif [ -d "$d/.hg" ]; then
vc=hg
fi
if [ -n "$vc" ]; then break; fi
d=${d%/*}
done
fi
if [ -z "$vc" ]; then
echo 1>&2 "This directory does not seem to be under version control."
exit 2
fi
Вы используете DESTDIR
нестандартным способом. Это не префикс установки Вашего пакета, это - "fakeroot" префикс для вещей, таких как сборки пакета.
Более типичный способ записать это является чем-то вроде этого:
prefix = /usr/local
bindir = $(prefix)/bin
libdir = $(prefix)/lib
install: $(PHONIX) $(ANTLR) doc
install -m 0755 -d $(DESTDIR)$(libdir)/phonix
install -m 0755 -t $(DESTDIR)$(libdir)/phonix $(PHONIX) $(ANTLER)
install -m 0755 -D phonix.sh $(DESTDIR)$(bindir)/phonix
sed -i "s!PREFIX!$(libdir)!" $(DESTDIR)$(bindir)/phonix
Отпуск DESTDIR
пустой в make-файле Вашего пакета. Это должно быть установлено в debian/rules
или автоматически горячекатаным или cdbs. Я предполагаю от Вашего вопроса, что это действительно становится установленным так или иначе.