Установка переменных среды в OS X

В вашем номере, я думаю, есть две возможные причины. Во-первых, ваш общедоступный IP-адрес не находится в одном регионе с вашим кластером AKS. Я думаю, что это наиболее вероятная причина. Другой - ваш кластер AKS не имеет разрешения на выполнение этого действия.

Когда вы используете статический публичный IP, есть также два способа. Один находится в группе узлов, а другой - вне группы узлов. Когда вы используете общедоступный IP-адрес вне группы узлов, у вашего кластера AKS должно быть разрешение «Network Contributor» для группы, в которой публичный IP-адрес указан как минимум. См. Использование статического IP-адреса вне группы ресурсов узла .

830
задан 27.08.2018, 08:33

12 ответов

Бруно на верном пути. Я провел обширное исследование, и если вы хотите установить переменные, которые доступны во всех приложениях с графическим интерфейсом, ваш единственный вариант - /etc/launchd.conf.

Обратите внимание, что environment.plist не работает для приложений, запущенных через Spotlight. Это задокументировано Стивом Секстоном здесь .

  1. Откройте окно терминала

  2. Тип sudo vi /etc/launchd.conf (примечание: этот файл может еще не существовать)

  3. Поместите содержимое, подобное следующему, в файл

    # Set environment variables here so they are available globally to all apps
    # (and Terminal), including those launched via Spotlight.
    #
    # After editing this file run the following command from the terminal to update
    # environment variables globally without needing to reboot.
    # NOTE: You will still need to restart the relevant application (including
    # Terminal) to pick up the changes!
    # grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
    #
    # See http://www.digitaledgesw.com/node/31
    # and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
    #
    # Note that you must hardcode the paths below, don't use environment variables.
    # You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
    #
    setenv JAVA_VERSION 1.6
    setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
    setenv GROOVY_HOME /Applications/Dev/groovy
    setenv GRAILS_HOME /Applications/Dev/grails
    setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
    setenv JRUBY_HOME /Applications/Dev/jruby
    
    setenv ANT_HOME /Applications/Dev/apache-ant
    setenv ANT_OPTS -Xmx512M
    
    setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
    setenv M2_HOME /Applications/Dev/apache-maven
    
    setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
    
  4. Сохраните изменения в vi и перезагрузите Mac. Или используйте команду grep / xargs , которая показана в комментарии к коду выше.

  5. Докажите, что ваши переменные работают, открыв окно терминала и напечатав export, и вы должны увидеть свои новые переменные. Они также будут доступны в IntelliJ IDEA и других приложениях с графическим интерфейсом, которые вы запускаете через Spotlight.

644
ответ дан 04.10.2019, 11:25
  • 1
    Есть ли какой-либо способ сделать это без выполнение системная перезагрузка ? – sorin 06.02.2010, 02:18
  • 2
    Упомянутое выше ограничение относится к MacOS X 10.5. Однако MacOS X 10.6 больше не имеет этого ограничения, и установка значений внутри environment.plist хорошо работает даже для приложений, запущенных через центр внимания. Таким образом, выбранный ответ корректен для Snow Leopard;-) – Louis Jacomet 10.06.2010, 04:54
  • 3
    Установка launchd.conf является одним путем, но нуждается в перезагрузке (для перезапуска launchd). Если Вы хотите избежать перезагрузки, см. мой ответ stackoverflow.com/questions/135688/… – Matt Curtis 21.09.2010, 15:25
  • 4
    Существует несколько проблем с представленным подходом launchd. Большинство характерно для переменной окружения PATH, но автор вопроса действительно упоминал ПУТЬ конкретно. 1) объекты в launchd.conf не становятся прикладными в интерактивных оболочках, таких как ssh в систему. 2) наличие строки " setenv СОЕДИНЯЮТ КАНАЛОМ/testdir" добавляет к ПУТИ в Terminal.app, но сдувает все другие объекты ПУТИ в OS X Applications' Среды. 3) Выполнение " setenv СОЕДИНЯЮТ $ каналом {ПУТЬ}:/testdir" в/etc/launchd.conf doesn' t правильно расширяются на существующие 4$PATH), launchd.conf, относится ко всем пользователям, вместо всего один. Не то, чтобы я имею немного лучше soln. – NoahR 09.12.2011, 14:43

Для Bash попробуйте добавить переменные окружения в файл /etc/profile, чтобы сделать их доступными для всех пользователей. Не нужно перезагружаться, просто начните новый сеанс терминала.

1
ответ дан 04.10.2019, 11:25

Вся магия на iOS работает только с использованием source с файлом, куда вы экспортируете переменные окружения.

Например:

Вы можете создать такой файл:

export bim=fooo
export bom=bar

Сохранить этот файл как bimbom.env и сделать source ./bimbom.ev. Вуаля, у тебя есть переменные среды.

Проверьте их с помощью:

echo $bim
2
ответ дан 04.10.2019, 11:25
  • 1
    Я высоко высоко сомневаюсь относительно него, но I' d любят видеть, как это идет (просто don' t повреждают что-либо). – Owen 29.11.2019, 07:05

Ну, я не уверен в /etc/paths и ~/.MacOSX/environment.plist файлы. Те являются новыми.

, Но с Bash, необходимо знать, что .bashrc выполняется с каждым новым вызовом оболочки, и .bash_profile только выполняется однажды при запуске.

я не знаю, как часто это с Mac  OS  X. Я думаю, что различие сломалось с оконной системой, запускающей все.

Лично, я устраняю беспорядок путем создания .bashrc файл со всем, в чем я нуждаюсь и затем делаю:

ln -s .bashrc .bash_profile
3
ответ дан 04.10.2019, 11:25
  • 1
    о, я искал это, теперь я протестировал этот подход и работающий как очарование Парни! Человек спасибо – Naveed Ahmad 26.02.2020, 15:38

Для однопользовательской модификации используйте ~/.profile из перечисленных вами. Следующая ссылка объясняет, когда Bash читает разные файлы.

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

Если вы хотите установить переменную окружения для приложений графического интерфейса, вам нужен ~ / .MacOSX / файл environment.plist

3
ответ дан 04.10.2019, 11:25
  • 1
    как получить различие часов и минут от этого метода? Мы можем получить прошлые/будущие часы, минуты и т.д.? – Naveed Ahmad 26.02.2020, 15:39

Любой Bash запускает файлы - ~/.bashrc, ~/.bash_profile, ~/.profile. Существует также своего рода странный файл, названный ~/.MacOSX/environment.plist для переменных среды в приложениях GUI.

10
ответ дан 04.10.2019, 11:25

Другое, бесплатное программное обеспечение с открытым исходным кодом, Mac & OS & nbsp; X & nbsp; v10.8 (Mountain Lion) Pane / environment.plist Preference, представляет собой EnvPane .

Исходный код EnvPane доступен на GitHub . Похоже, что EnvPane имеет сравнимые возможности с RCEnvironment , однако, похоже, он может обновлять свои сохраненные переменные мгновенно, то есть без необходимости перезапуска или входа в систему, что приветствуется.

Как заявляет разработчик:

EnvPane - это панель настроек для Mac OS X 10.8 (Mountain Lion), которая позволяет устанавливать переменные среды для всех программ как в графическом, так и в терминальном сеансах. Он не только восстанавливает поддержку ~ / .MacOSX / environment.plist в Mountain Lion, но и немедленно публикует ваши изменения в среде без необходимости выхода и повторного входа. < SNIP > EnvPane включает (и автоматически устанавливает) агент launchd, который запускается 1) рано после входа в систему и 2) каждый раз, когда изменяется ~ / .MacOSX / environment.plist. Агент читает ~ / .MacOSX / environment.plist и экспортирует переменные среды из этого файла в экземпляр launchd текущего пользователя через тот же API, который используется launchctl setenv и launchctl unsetenv.

Отказ от ответственности: я никоим образом не связан с разработчиком или его / ее проектом.

P.S. Мне нравится название (звучит как «Ends Pain»).

22
ответ дан 04.10.2019, 11:25
  • 1
    EnvPane can' t установленный ПУТЬ в данный момент. Для получения дополнительной информации см. мой отчет об ошибках: github.com/hschmidt/EnvPane/issues/5 – Uwe Günther 25.03.2013, 17:39
  • 2
    Я в™ҐпёЏ эта вещь.. Только недостаток.. который я думаю , ЛЮБЫМ решением будет жертва лет.. - имеющий необходимость перезапустить процесс - для наследования нового " environment". зубрила зубрилы. – Alex Gray 08.05.2014, 13:16

Иногда все предыдущие ответы просто не работают. Если вы хотите иметь доступ к системной переменной (например, M2_HOME) в Eclipse или IntelliJ IDEA, единственное, что мне подходит в этом случае, это:

Сначала (шаг 1) отредактируйте /etc/launchd.conf в содержат строку, подобную этой: «VAR-значение setenv», а затем (шаг 2) перезагрузите компьютер.

Простое изменение .bash_profile не сработает, потому что в OS & nbsp; X приложения не запускаются, как в других Unix'ах; они не наследуют переменные оболочки родителя. Все остальные модификации не будут работать по неизвестной мне причине. Может быть, кто-то еще может прояснить это.

15
ответ дан 04.10.2019, 11:25
  • 1
    Приложения начали с Центра внимания, или любыми другими средствами у всех есть/etc/launchd.conf, считанный их родительским процессом, таким образом делая, что привлекательный выбор для того, где установить переменные среды, видимые во всех приложениях и оболочках. – Matthew McCullough 26.02.2009, 15:51
  • 2
    См. мой ответ для другого решения, которое избегает перезагрузки - stackoverflow.com/questions/135688/… – Matt Curtis 29.09.2010, 17:24
  • 3
    Моя машина MaxOS 10.6 не имеет/etc/launchd.conf файла существующим. Действительно ли это - или новое или устаревшая вещь с этой версии? Или эта машина испорчена? – peterk 10.10.2011, 13:41
  • 4
    да, та сводка после фиксации перечисляет файлы, которые добавлены, удалены, переименованы, скопированы или переписаны (это - вывод git diff --summary HEAD^..). Таким образом, другие изменения являются " normal" изменения в файлах - недостаточно для инициирования эвристики перезаписи. – araqnid 02.12.2012, 14:05

Хотя ответы здесь не являются «неправильными», я добавлю еще один: никогда не вносите изменения переменных среды в OS X, которые влияют на «все процессы», или даже вне оболочки, для всех процессов, выполняемых в интерактивном режиме заданным пользователь.

По моему опыту, глобальные изменения переменных среды, таких как PATH, для всех процессов даже более вероятны для OS X, чем для Windows. Причиной этого является то, что многие приложения OS X и другое программное обеспечение (включая, возможно, особенно компоненты самой ОС) полагаются на инструменты командной строки UNIX изнутри и принимают поведение версий этих инструментов, поставляемых с системой, и при этом не обязательно использовать абсолютные пути (аналогичные комментарии применяются к динамически загружаемым библиотекам и переменным окружения DYLD_ *). Предположим, например, что наиболее высоко оцененные ответы на различные вопросы о переполнении стека о замене предоставленных OS X версий интерпретаторов, таких как Python и Ruby, обычно говорят «не делайте этого».

OS X на самом деле нет в этом отношении отличается от других UNIX-подобных операционных систем (например, Linux, FreeBSD и Solaris); наиболее вероятная причина, по которой Apple не предоставляет простой способ сделать это, заключается в том, что она ломает вещи . В той степени, в которой Windows не так подвержена этим проблемам, это связано с двумя причинами: (1) программное обеспечение Windows не склонно полагаться на инструменты командной строки, как это делает программное обеспечение UNIX, и (2) Microsoft имела такая обширная история как «ада DLL», так и проблем безопасности, вызванных изменениями, которые влияют на все процессы, что они изменили поведение динамической загрузки в более новых версиях Windows, чтобы ограничить влияние «глобальных» параметров конфигурации, таких как PATH.

«Хромая» или нет, у вас будет гораздо более стабильная система, если вы ограничите такие изменения меньшими областями.

15
ответ дан 04.10.2019, 11:25

Вот очень простой способ сделать то, что вы хотите. В моем случае это заставляло Gradle работать (для Android Studio).

  • Открыть терминал.
  • Выполните следующую команду:

    sudo nano /etc/paths или sudo vim /etc/paths

  • Введите свой пароль, когда будет предложено.

  • Перейдите в конец файла и введите путь, который вы хотите добавить.
  • Нажмите Control + X , чтобы выйти.
  • Введите «Y», чтобы сохранить измененный буфер.
  • Откройте новое окно терминала и введите:

    echo $PATH

Вы должны увидеть новый путь, добавленный в конец PATH.

Я получил эти подробности из этого поста:

Добавить в PATH на Mac OS X 10.8 Mountain Lion и выше

10
ответ дан 04.10.2019, 11:25
  1. Do:

    vim ~/.bash_profile
    

    Файл может не существовать (если нет, вы можете просто создать его).

  2. Введите это и сохраните файл:

    export PATH=$PATH:YOUR_PATH_HERE
    
  3. Выполните

    source ~/.bash_profile
    
50
ответ дан 04.10.2019, 11:25
  • 1
    +1 export то, что я собирался предложить, начиная с Bash doesn' t поддержка setenv – vol7ron 11.06.2012, 13:17
  • 2
    У Вас есть опечатка, вышеупомянутое должно сказать ~/.bash_profile. – Andrew Ferrier 19.12.2013, 03:04
  • 3
    Это только работает на Terminal.app. – Fish Monitor 21.02.2014, 16:50
  • 4
    Ссылка Вы дали мне работавший отлично! Я don' t знают C++, я попытаюсь преобразовать тот код в c#. Я приму Ваш ответ как только переполнение стека let' s я. Спасибо! – Tono Nam 17.01.2020, 03:47

До и включая OS  X  (лев) v10.7 можно установить их в:

~/.MacOSX/environment.plist

См.:

Для ПУТИ в Терминале, необходимо быть в состоянии установить в .bash_profile или .profile (необходимо будет, вероятно, создать его хотя)

Для OS  X  (пума) v10.8 и вне [1 111] необходимо использовать launchd и launchctl .

106
ответ дан 04.10.2019, 11:25
  • 1
    Это - то, только если Вы на самом деле ожидаете, что они будут использоваться графическими приложениями. Начиная с этих don' t обычно используют переменные среды, it' s не очень хорошее место для установки их. – Chris Hanson 26.09.2008, 11:33
  • 2
    There' s некоторые очень хорошие примеры графических приложений то использование переменные среды. IntelliJ, например, любит быть в состоянии видеть M2_HOME для знания, где Знаток живет. Заставить его видеть переменную, you' ll должен установить его в/etc/launchd.conf вместо environment.plist. – Matthew McCullough 26.02.2009, 15:58
  • 3
    Для ссылки: использование preferences.plist было меньше, чем идеал с OS X 10.5, так как в то время preferences.plist не был считан из приложений, запущенных через центр внимания, см. комментарий Louis к Matthew' s отвечают и email.esm.psu.edu/pipermail/macosx-emacs/2010-May/002113.html . Для OS X 10.6 environment.plist работы точно так же, как это должно. – Janus 14.09.2010, 15:36
  • 4
    Это больше не применимо к OSX 10.8 apple.stackexchange.com/questions/57385/… – thatsmydoing 23.08.2012, 18:24
  • 5
    @tim_yates Мог Вы редактировать первую строку своего ответа для чтения " [до 111] и включая Лев (10. *7*)" учитывая, что это - what' s корректный? Я пытался сделать то редактирование к исходному, неоднозначному " До горы Lion" и рецензенты испортили его. – mklement0 01.06.2013, 16:52

Теги

Похожие вопросы