Запустите mac eclipse с установленными переменными окружения

Моя компания предоставляет среду разработки на основе eclipse, для которой требуются некоторые переменные среды для базовой инструментальной цепочки, поэтому несколько версий могут устанавливаться одновременно и не принимать на себя систему.

Я хочу предоставить значок в finder или док-станцию, который устанавливает это, а затем запускает eclipse, чтобы клиенты не могли случайно запустить eclipse без установленной среды. Это то, что я пробовал до сих пор:

  • Настройка среды в Info.plist для затмения:

    Это должен быть хороший способ сделать это но я не могу добавить его в существующий путь (например, экспорт PATH =/MyApp/бин:. $PATH)

  • bash script wrapping eclipse:

    Я создал вызов bash script eclipse.command, чтобы установить затем запустите eclipse. Это также открывает окно терминала как значок затмения и позволяет люди, чтобы "Держать на скамье подсудимых" для голый затмение. Я не могу поставить eclipse.command на доке, так как это не приложение.

  • Applescript wrapping eclipse.command:

    Обертка Applescript вокруг eclipse.command делает его похожим приложение и предотвращает работу терминала появится окно. К сожалению, Я теперь получите значок док-станции для applescript и один для затмения, поэтому все еще может сохранить голый затмение док.

Любые предложения? Неужели я об этом не совсем правильно?

Ответ 1

Существует альтернативное решение, которое включает замену исполняемого файла, запускаемого MacOS X, когда пользователь запускает приложение Eclipse с оболочкой оболочки, которая устанавливает среду.

Создайте пустой текстовый файл с именем "eclipse.sh" в каталоге пакета приложений Eclipse/Applications/eclipse/Eclipse.app/Contents/MacOS.

Откройте eclipse.sh в текстовом редакторе и введите следующее содержимое:

#!/bin/sh

export ENV_VAR1=value
export ENV_VAR2=value

logger "`dirname \"$0\"`/eclipse"

exec "`dirname \"$0\"`/eclipse" [email protected]

В примере ENV_VAR1 и ENV_VAR2 устанавливаются переменные среды. Эти переменные будут видны для процессов, запущенных из Eclipse. Команда logger будет просто записывать путь к исполняемому файлу eclipse в system.log в качестве средства отладки.

В терминале установите исполняемый флаг оболочки script eclipse.sh, т.е.:

chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh

Откройте Eclipse.app Info.plist и измените значение для ключа CFBundleExecutable из eclipse в eclipse.sh.

MacOS X не обнаруживает автоматического изменения Eclipse.app Info.plist. Поэтому вам необходимо принудительно обновить базу данных LaunchService в терминале с помощью команды lsregister:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

При следующем запуске Eclipse.app из Dock или из Finder должны быть установлены переменные среды.

Ответ 2

Посмотрите на связанный с этим вопрос: Переменные среды в Mac OS X.

В основном это связано с созданием файла ~/.MacOSX/environment.plist.

Выйдите из системы и войдите в систему environment.plist, чтобы получить файл .App

Ответ 3

Я создал следующее:

alias start-eclipse = 'open/Applications/eclipse/Eclipse.app'

Если вы запустили start-eclipse из командной строки, все env vars будут подняты. Таким образом, вам нужно поддерживать только один набор env vars в средах командной строки и затмения.

Ответ 4

Ответ sakra выше - это потрясающе, но не автоматически наследует существующую среду bash. Чтобы обеспечить, чтобы eclipse.sh загрузила существующую среду bash, измените eclipse.sh, чтобы использовать bash вместо sh и добавьте строку для источника существующего файла ~/.bash_profile, таким образом:

#!/bin/bash
source ~/.bash_profile
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" [email protected]

Ответ 5

Это отлично работало в OS X Yosemite:

  • Open/Applications/Automator.
  • Когда появится раскрывающийся список с вопросом о том, какой документ вы хотите создать, выберите "Приложение".
  • Во втором списке слева дважды щелкните "Запустить оболочку Script".
  • В правой части удалите "cat", который ставится там автоматически, и замените его на это:

    source ~/.bash_profile && /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse
    

Теперь перейдите в меню Файл- > Сохранить и сохраните приложение в каталоге приложений. Я назвал его "Eclipse" с капиталом "E", чтобы не вступать в конфликт с уже имевшимся каталогом "eclipse". Для хорошей меры вы можете даже присвоить ей значок Eclipse, выбрав реальное приложение eclipse, нажав команду-i, выбрав значок, нажав команду-c, затем выбрав приложение "Eclipse" автомата, нажав команду-i, выбрав значок, и нажмите команду-v.

Теперь вы можете открыть приложение или даже перетащить его на док-станцию. Обратите внимание: если вы запустите его, "реальное" затмение будет отображаться на док-станции как отдельный значок, но вы не сможете получить все.:)

Ответ 6

Ничто из этого не помогло мне. вам нужно установить Eclipse → Настройки → Terminal → Аргументы, установленные в --login Это будет инструктировать Eclipse для входа в вашу учетную запись сразу после открытия терминала.

Смотрите снимок экрана:

введите описание изображения здесь

Ссылка: https://marketplace.eclipse.org/comment/4259#comment-4259

Ответ 7

Ссылка на Eclipse не использует путь, установленный в .bashrc

  • Создать простой script
#!/bin/bash
source /home/user/.environment_variables
/home/user/eclipse_cpp/eclipse -Duser.name="My Name"

2. Затем поместите все системные переменные в файл /home/user/.environment_variables (любой файл, который вы хотите)

Как выглядит:

export COCOS_ROOT=/home/user/Projects/edukoala
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

3. Теперь вы можете удалить свои переменные в .bashrc и поместить строку

source /home/user/.environment_variables

Все отлично работает:)

Ответ 8

Как указано в https://github.com/atom/atom/issues/7045, переменные среды могут быть загружены автоматически без явного source ~/.bash_profile с помощью

#!/usr/bin/env bash -l

вместо

#!/bin/bash
source ~/.bash_profile

после этого в обоих случаях следует

exec "`dirname \"$0\"`/eclipse" [email protected]

Это отлично работает для меня, спасибо за все предыдущие работы.