- Использование переменных среды в Терминале на Mac
- Где установить переменные окружения в Mac OS X 2021
- Полный обзор Mac OS X 10.11 El Capitan
- Отображение текущей среды и переменных оболочки в Mac OS X
- Установка переменных среды в командной строке Mac OS X
- Установка Временных переменных среды в OS X
- macos — change — tag editor mac
- Переменные среды в Mac OS X (6)
- Переменные среды в Mac OS X
- 9 ответов
Использование переменных среды в Терминале на Mac
Shell использует переменные среды для хранения информации, такой как имя текущего пользователя, имя хоста и пути по умолчанию к любым командам. Переменные среды наследуются всеми командами, которые исполняются в контексте shell, и некоторыми командами, которые зависят от переменных среды.
Вы можете создать переменные среды и использовать их для управления работой команды, не изменяя саму команду. Например, с помощью переменной среды можно сделать так, чтобы команда печатала отладочную информацию в консоль.
Чтобы задать значение для переменной среды, свяжите имя переменной с требуемым значением при помощи соответствующей команды shell. Например, чтобы задать для переменной PATH значение /bin:/sbin:/user/bin:/user/sbin:/system/Library/ , необходимо ввести следующую команду в окне «Терминала».
Чтобы просмотреть все переменные среды, введите:
При запуске приложения из shell приложение наследует значительную часть среды shell, в том числе экспортированные переменные среды. Эта форма наследования может быть полезна для динамической настройки приложения. Например, приложение может проверить наличие (или значение) переменной среды и изменить свою работу соответствующим образом.
Различные shell поддерживают различные семантики для экспорта переменных среды. Cм. man‑страницу предпочитаемой Вами оболочки shell.
Несмотря на то что дочерние процессы shell наследуют среду этой shell, различные shell имеют раздельные контексты исполнения, которые не делятся друг с другом информацией о среде. Переменные, заданные в одном окне Терминала, не передаются в другие окна Терминала.
После закрытия окна Терминала все переменные, которые Вы задали в этом окне, больше не доступны. Если Вы хотите, чтобы значение переменной сохранялось между различными сеансами и во всех окнах Терминала, настройте ее в загрузочном скрипте shell. Об изменении загрузочного скрипта оболочки zsh для сохранения переменных и других настроек между сеансами см. в разделе Invocation на man-странице оболочки zsh.
Источник
Где установить переменные окружения в Mac OS X 2021
Полный обзор Mac OS X 10.11 El Capitan
В командной строке переменные среды определяются для текущей оболочки и становятся наследуемыми любой запущенной командой или процессом. Они могут определять что угодно, от оболочки по умолчанию, PATH, домашнего каталога пользователей, до типа эмуляции терминала, текущего рабочего каталога, в котором находится файл истории, настройки языка и локализации, и далее включать переменные оболочки, которые включают все от настроек до приглашения bash, цветного вывода ls, изменений внешнего вида терминала, псевдонимов и многого другого.
Давайте рассмотрим, как перечислять переменные среды и оболочки, а затем как устанавливать и добавлять новые переменные среды в командной строке Mac OS X.
Отображение текущей среды и переменных оболочки в Mac OS X
Чтобы быстро получить список переменных среды, вы можете использовать следующую команду:
Если вы хотите увидеть полный список переменных оболочки, можно также выполнить команду ‘set’:
Вывод этих команд может быть длинным, поэтому вы можете захотеть передать вывод через команды less или more.
Установка переменных среды в командной строке Mac OS X
Поскольку по умолчанию Mac использует оболочку bash, вы можете установить переменные окружения в пользовательских каталогах .bash_profile, для активной учетной записи пользователя путь к этому файлу находится по адресу:
Если вы изменили свою оболочку или не уверены, какую оболочку вы используете, вы всегда можете проверить, введя команду echo $ SHELL, которая покажет, какая оболочка используется. Мы предполагаем, что вы все еще используете оболочку bash по умолчанию для OS X, поэтому мы добавим новые переменные окружения, изменив .bash_profile с помощью nano — вы можете использовать vi, emacs или другой текстовый редактор, если хотите, но мы рассмотрим нано для простоты.
Начните с открытия .bash_profile в текстовом редакторе nano:
Вы можете добавить переменные окружения и переменные оболочки в новые строки, если в файле .bash_profile уже есть данные, просто обязательно добавьте новые переменные в новую пустую строку, используя при необходимости клавиши со стрелками и клавишу возврата.
Давайте возьмем пример и скажем, что мы собираемся установить переменные окружения JAVA_HOME и JRE_HOME в .bash_profile, добавив следующее в новые строки файла:
export JAVA_HOME=$(/usr/libexec/java_home)
export JRE_HOME=$(/usr/libexec/java_home)
Предполагая, что мы закончили, сохраните изменения, внесенные в .bash_profile, нажав Control + o (это o, как в выдре), затем выйдите из nano, нажав Control + X
Изменения и дополнения, внесенные в переменные среды, потребуют перезапуска оболочки или появления новой оболочки.
Установка Временных переменных среды в OS X
Стоит отметить, что вы также можете установить временные переменные среды в bash, используя саму команду «export», хотя они будут сохраняться только до тех пор, пока текущая оболочка bash остается активной. Например, если вы хотите добавить временный путь к
/ bin /, вы можете использовать следующую команду:
Опять же, команда «export», запускаемая сама по себе и не содержащаяся в .bash_profile, будет только временной настройкой, и переменная среды не будет сохраняться, пока вы не добавите ее в .bash_profile.
Если вы действительно хотите добавить новый PATH для использования, вы почти наверняка должны добавить его в .bash_profile, поместив соответствующую команду экспорта в файл.
Выходя за пределы оболочки bash, если вы изменили стандартную оболочку приложения терминала с bash на tcsh, zsh, sh, ksh, fish или любую другую альтернативную оболочку, вам просто нужно изменить соответствующий профиль или файл rc. для этой конкретной оболочки (.tschrc, .cshrc, .profile и т. д.).
Источник
macos — change — tag editor mac
Переменные среды в Mac OS X (6)
Вы можете читать на linux, что довольно близко к Mac OS X. Или вы можете прочитать на BSD Unix, который немного ближе. По большей части различия между Linux и BSD не так уж много.
/etc/profile — переменные системной среды.
/.profile — это переменные среды, специфичные для пользователя.
«Где я должен установить переменную JAVA_HOME?»
- У вас несколько пользователей? Им все равно? Не могли бы вы повредить другой пользователь, изменив /etc/profile ?
Как правило, я предпочитаю не вмешиваться в общесистемные настройки, хотя я единственный пользователь. Я предпочитаю редактировать свои локальные настройки.
Обновление: ссылка ниже не содержит полного ответа . Наличие пути или переменной в двух местах (один для графического интерфейса и один для оболочки) является хромым.
Исходя из фона Windows, где очень легко установить и изменить переменные среды (просто перейдите в «Свойства системы»> «Дополнительно»> «Переменные среды»), похоже, что это не так прямо в Mac OS 10.5. Большинство ссылок говорят, что я должен обновить / etc / profile или
/ .profile. Являются ли они эквивалентными системным переменным и пользовательским переменным? Например, где я должен установить переменную JAVA_HOME ?
Я хочу иметь доступ к переменной из терминала, а также к приложению вроде Eclipse. Кроме того, я надеюсь, что мне не нужно перезапускать / выйти из системы, чтобы это вступало в силу.
Для приложений с графическим интерфейсом вам нужно будет создать и отредактировать
/.MacOSX/environment.plist . Подробнее here . Вам нужно будет выйти из системы, чтобы они вступили в силу. Я не уверен, что они также влияют на приложения, запущенные с терминала, но я предполагаю, что они это сделают.
Для приложений, запущенных с терминала, вы также можете редактировать файл
Есть несколько мест, где вы можете установить переменные среды.
/.profile : используйте это для переменных, которые вы хотите установить во всех программах, запущенных с терминала (обратите внимание, что, в отличие от Linux, все оболочки, открытые в Terminal.app, являются командами входа в систему).
/.bashrc : это вызывается для оболочек, которые не являются командами входа в систему. Используйте это для псевдонимов и других вещей, которые необходимо переопределить в подоболочках, а не для переменных окружения, которые унаследованы.
/etc/profile : это загружается до
/ .profile, но в остальном эквивалентно. Используйте его, когда вы хотите, чтобы переменная применима к терминальным программам, запускаемым всеми пользователями на компьютере (при условии, что они используют bash).
/.MacOSX/environment.plist : это считывается loginwindow при входе в систему. Он применяется ко всем приложениям, включая графические интерфейсы, за исключением запущенных Spotlight в 10.5 (не 10.6). Чтобы изменения вступили в силу, вам необходимо снова выйти и войти в систему. Этот файл больше не поддерживается на OS X 10.8.
ваш экземпляр launchd вашего пользователя: это относится ко всем программам, запускаемым пользователем, графическим интерфейсом и CLI. Вы можете вносить изменения в любое время, используя команду setenv в launchctl . Теоретически вы должны иметь возможность вводить команды setenv в
/.launchd.conf , и launchd будет автоматически читать их при входе пользователя в систему, но на практике поддержка этого файла никогда не была реализована. Вместо этого вы можете использовать другой механизм для launchctl скрипта при входе в систему и launchctl этот скрипт для launchd среды launchd .
Основные вещи для понимания:
- переменные среды наследуются дочерними процессами процесса в момент их раздвоения.
- корневой процесс — это экземпляр launchd, а также отдельный экземпляр запуска для каждого сеанса пользователя.
- startd позволяет изменять текущие переменные среды с помощью launchctl ; обновленные переменные затем наследуются всеми новыми процессами, с которых он вилки.
Пример установки переменной среды с помощью запуска:
Теперь запустите приложение GUI, которое использует переменную, и вуаля!
Чтобы обойти тот факт, что
/.launchd.conf не работает, вы можете поместить следующий скрипт в
Затем вы можете поместить setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE внутри
/.launchd.conf , и он будет выполнен при каждом входе в систему.
Обратите внимание, что при компоновке списка команд в launchctl таким образом вы не сможете установить переменные среды со значениями, содержащими пробелы. Если вам нужно это сделать, вы можете вызвать launchctl следующим образом: launchctl setenv MYVARIABLE «QUOTE THE STRING» .
Кроме того, обратите внимание, что другие программы, которые запускаются при входе в систему, могут выполняться до запуска, и, следовательно, могут не отображаться переменные среды, которые он устанавливает.
Нет необходимости в дублировании. Вы можете установить переменные среды, используемые startd (и дочерние процессы, то есть все, что вы начинаете с Spotlight), используя launchctl setenv .
Например, если вы хотите отразить свой текущий путь в startd после его настройки в .bashrc или где угодно:
Переменные среды не обновляются автоматически при запуске приложений. Вам нужно будет перезапустить приложения, чтобы получить обновленные переменные среды (хотя вы можете просто установить переменные в своей оболочке, например, PATH=whatever:you:want , нет необходимости перезапуска терминала).
Синхронизировать переменные среды OS X для командной строки и приложений GUI из одного источника с помощью osx-env-sync .
Я также опубликовал ответ на соответствующий вопрос here .
Я думаю, что OP ищет простое, подобное окну решение.
Источник
Переменные среды в Mac OS X
Обновление: ссылка ниже не содержит полного ответа . Необходимость задавать путь или переменную в двух местах (одно для графического интерфейса пользователя и одно для оболочки) — это неуместно.
Исходя из фона Windows, где очень легко устанавливать и изменять переменные среды (просто перейдите в Свойства системы> Дополнительно> Переменные среды), это не кажется таким простым в Mac OS 10.5. В большинстве ссылок говорится, что я должен обновить / etc / profile или
/ .profile. Являются ли они эквивалентами системных и пользовательских переменных? Например, где мне установить переменную JAVA_HOME ?
Я хочу иметь доступ к переменной из терминала, а также из такого приложения, как Eclipse. Кроме того, я надеюсь, что мне не нужно перезапускать / выходить из системы, чтобы это вступило в силу.
9 ответов
Нет необходимости в дублировании. Вы можете установить переменные среды, используемые launchd (и дочерними процессами, т. Е. Всем, что вы запускаете из Spotlight), используя launchctl setenv .
Например, если вы хотите отразить свой текущий путь в launchd после его настройки в .bashrc или где-то еще:
Переменные среды не обновляются автоматически в запущенных приложениях. Вам нужно будет перезапустить приложения, чтобы получить обновленные переменные среды (хотя вы можете просто установить переменные в своей оболочке, например PATH=whatever:you:want ; нет необходимости перезапускать терминал).
Есть несколько мест, где вы можете установить переменные окружения.
/.profile : используйте это для переменных, которые вы хотите установить во всех программах, запускаемых из терминала (обратите внимание, что, в отличие от Linux, все оболочки, открытые в Terminal.app, являются оболочками входа в систему).
/.bashrc : вызывается для оболочек, которые не являются оболочками входа в систему. Используйте это для псевдонимов и других вещей, которые необходимо переопределить в подоболочках, а не для наследуемых переменных среды.
/etc/profile : он загружается перед
/ .profile, но в остальном эквивалентен. Используйте его, если хотите, чтобы переменная применялась к программам терминала, запускаемым всеми пользователями на машине (при условии, что они используют bash).
/.MacOSX/environment.plist : это читается окном входа в систему при входе в систему. Это применимо ко всем приложениям, включая приложения с графическим интерфейсом, за исключением запущенных Spotlight в 10.5 (не 10.6). Вам потребуется выйти и снова войти в систему, чтобы изменения вступили в силу. Этот файл больше не поддерживается в OS X 10.8.
экземпляр вашего пользователя launchd : это относится ко всем программам, запускаемым пользователем, GUI и CLI. Вы можете применить изменения в любое время, используя команду setenv в launchctl . Теоретически вы должны иметь возможность помещать команды setenv в
/.launchd.conf , и launchd будет читать их автоматически, когда пользователь входит в систему, но на практике поддержка этот файл никогда не был реализован. Вместо этого вы можете использовать другой механизм для выполнения сценария при входе в систему и заставить этот сценарий вызывать launchctl для настройки среды launchd .
Основные вещи, которые необходимо понять:
- переменные среды наследуются дочерними процессами во время их разветвления.
- корневой процесс — это экземпляр launchd, а также отдельный экземпляр launchd для каждого пользовательского сеанса.
- launchd позволяет изменять текущие переменные среды с помощью launchctl ; обновленные переменные затем наследуются всеми новыми процессами, которые он с этого момента разветвляет.
Пример установки переменной окружения с помощью launchd:
Теперь запустите приложение с графическим интерфейсом пользователя, в котором используется переменная, и вуаля!
Чтобы обойти тот факт, что
/.launchd.conf не работает, вы можете поместить следующий скрипт в
Затем вы можете поместить setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE внутрь
/.launchd.conf , и он будет выполняться при каждом входе в систему.
Обратите внимание, что при передаче списка команд в launchctl таким образом вы не сможете установить переменные среды со значениями, содержащими пробелы. Если вам нужно это сделать, вы можете вызвать launchctl следующим образом: launchctl setenv MYVARIABLE «QUOTE THE STRING» .
Также обратите внимание, что другие программы, запускаемые при входе в систему, могут выполняться до запуска агента и, таким образом, могут не видеть устанавливаемые им переменные среды.
Я думаю, что OP ищет простое оконное решение.
Источник