Это не так, что это не портативно, но что существует нет [
реализация, где это надежно при передаче больше чем 4 аргумента.
Даже в ударе:
$ ALTNAMES='=' bash -c '[ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ]'
bash: line 0: [: too many arguments
Связанные состояния раздела:
> 4 аргумента:
Результаты являются неуказанными.
[ОБЬ XSI] [Опция Запускается] В XSI-совместимых системах, комбинации основных устройств и операторов должны быть оценены с помощью приоритета и правил ассоциативности, описанных ранее. Кроме того, двоичные основные устройства сравнения строк '=' и"! =", буду иметь более высокий приоритет, чем какое-либо унарное основное устройство. [Конец опции]
-a
и -o
должен быть запрещен. Правильный путь состоит в том, чтобы использовать &&
и ||
операторы оболочки вместо этого:
if [ -n "$foo" ] && [ -n "$bar" ]; then
Я даже нахожу это более четким.
На самом деле эта ошибка не имеет никакого отношения к Perl. bzr
клиент командной строки для распределенной системы управления версиями Базара. По-видимому, Ваша установка Bugzilla в репозитории Базара. Emacs обнаруживает это автоматически и пытается активировать свой режим управления версиями, но Вы не имеете bzr
клиент установлен. Emacs не подготовлен к той ситуации. Это на самом деле загружало файл, который Вы запросили; это просто не переключилось на тот буфер автоматически. (И Вы, вероятно, получите больше ошибок, при попытке отредактировать буфер.)
Можно установить bzr
пакет, или находят .bzr
каталог и переименовывает его так, Emacs не обнаружит его или настроит vc-handled-backends
переменная в Emacs для удаления Bzr
из списка.