Я пытаюсь установить приложение, но программа установки завершается ошибкой со следующим сообщением об ошибке:

sh: sed: команда не найдена

и в диалоговом окне есть кнопка «Изменить» и «ОК», поэтому я нажимаю кнопку «Редактировать», которая запускает редактор AppleScript, чтобы показать мне исполняемый скрипт. Запуск его из редактора тоже не работает.

Первая строка скрипта с sed

установите currdir_modified для выполнения сценария оболочки ("echo" & currdir & "| sed 's/ /\\ / g'")

Я пошел в терминал, чтобы убедиться, что sed доступен, и он находится в /usr /bin.

Это звучит как проблема пути, но я не уверен, куда идти дальше. Что я могу сделать, чтобы устранить неполадки или решить эту проблему?

Я успешно установил это приложение на другом компьютере Mac, работающем под той же версией OS X, так что он специфичен для моего компьютера Mac, и поддержка приложения больше не помогает, потому что это проблема моего компьютера, а не их.

2 ответа2

2

Используйте абсолютный путь к двоичному файлу sed, а не просто имя команды.

1

Похоже, вы изменили стандартную переменную PATH, которая наследуется приложениями с графическим интерфейсом (включая большинство бегунов AppleScript). Если вам просто нужно быстрое исправление, вы сможете сделать то, что указывает Hasaan Chop: просто измените sed на /usr/bin/sed в коде AppleScript, сохраните его и перезапустите установщик (хотя вы можете столкнуться с подобным проблемы с другими командами).

Если вы хотите исправить проблему, из-за которой /usr/bin отсутствовал в стандартном PATH, вам нужно будет немного покопаться, чтобы выяснить, где возникла проблема.

Обратите внимание, что (как вы косвенно выяснили) «путь по умолчанию», который видит приложение, отличается от «пути», который оболочка «входа», запущенная терминалом, создаст для себя. Оболочки в семействе Bourne (bash, zsh, ksh и т.д.) В режиме «login» запустят /etc/profile который (обычно) полностью сбрасывает PATH к новому значению (также файлы инициализации оболочки для каждого пользователя обычно добавляют различные другие каталоги в PATH). Суть в том, что файлы инициализации оболочки не имеют ничего общего с PATH, который видят приложения (есть исключения (например, Aquamacs), но они редки).

  • Обычное место для пользовательских переменных среды по умолчанию - ~/.MacOSX/environment.plist .

    Этот файл читается во время входа в систему и используется для добавления новых (или переопределения существующих) переменных среды для приложений, запущенных в текущем сеансе входа в систему.

    Для просмотра и / или редактирования этого файла вы можете использовать специализированный инструмент, такой как RCEnvironment (рекомендуется).
    Или, поскольку этот файл представляет собой файл plist, вы можете использовать редактор списков свойств (из средств разработки) или инструменты командной строки, такие как значения по умолчанию или PlistBuddy . Если файл в формате XML (вероятно), то вы могли бы даже использовать простой текстовый редактор.

  • Другим возможным местом для настроенных переменных среды по умолчанию является набор файлов конфигурации launchd .

    Эти файлы могут содержать любые подкоманды launchctl, включая подкоманды setenv и unsetenv которые могут изменить среду, наследуемую дочерними процессами.

    Индивидуальная настройка может быть выполнена в ~/.launchd.conf . Общесистемная настройка выполняется в /etc/launchd.conf .

Если вы обнаружите, что один из этих файлов манипулирует переменной окружения PATH, вы должны либо избавиться от манипуляции PATH (чтобы позволить значению по умолчанию проходить через приложения), либо добавить низкоуровневые каталоги по умолчанию (например, /usr/bin:/bin:/usr/sbin:/sbin) в любые пользовательские каталоги, которые вам нужны в PATH.

Если вы в конечном итоге вносите изменения в файл для каждого пользователя (~/.MacOSX/environment.plist или ~/.launchd.conf), то самый простой способ сделать изменения эффективными - выйти из системы (полный выход из системы, а не просто быстрое переключение пользователей) и войти в систему. Если вам пришлось изменить общесистемный файл, то проще всего перезагрузить компьютер. Технически можно начать использовать новые значения без перезагрузки или выхода из системы, это оставлено как «упражнение для читателя».


Следующее является исключением в отношении последствий этой единственной строки кода AppleScript, это не относится к проблеме PATH.

В этой строке кода также есть другая потенциальная ошибка (невозможность правильно заключить строковое значение currdir в код оболочки). Сама строка должна добавлять обратную косую черту перед каждым пробелом в строке. Наиболее вероятная причина сделать это, чтобы полученная строка могла быть непосредственно вставлена в другой битовый код оболочки. Проблема заключается в том, что существует много других символов, которые необходимо экранировать таким же образом, если код оболочки будет работать должным образом при наличии любой строки. Обе эти проблемы (на самом деле это одна и та же проблема) могут быть легко решены с помощью quoted form of команды AppleScript. Тот факт, что сценарий не использует quoted form of является признаком неопытности, которая заставляет меня нервничать по поводу того, что еще сценарий может делать неправильно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .