Установите переменные среды на Mac OS X Lion

Когда кто-то говорит "отредактируйте ваш файл.plist" или "ваш.profile" или ".bash_profile" и т. Д., Это просто смущает меня. Я понятия не имею, где находятся эти файлы, как их создавать, если я должен это сделать, и т. Д., А также почему, кажется, существует так много разных файлов (почему? Они делают разные вещи?)

Так может кто-то, пожалуйста, очень терпеливо объяснить предыдущему пользователю Windows (желающему отчаянно поближе познакомиться с приятным, хотя изначально несколько запутанным миром OS X), как сделать это шаг за шагом?

Мне нужно, чтобы переменные были установлены как для приложений с графическим интерфейсом, так и для приложений командной строки, и на данный момент переменные нужны для сценария ant, но, скорее всего, будут и другие потребности.

Обратите внимание, что у меня тоже есть Lion, так как многие ответы, которые вы получаете, Googling, кажется, для Lion устарели...

Также обратите внимание, что у меня практически нет опыта использования Терминала. Я готов учиться, но, пожалуйста, объясните для новичка...

15 ответов

Решение

Во-первых, следует признать, что OS X построен на Unix. Это где.bash_profile приходит. Когда вы запускаете приложение терминала в OS X, вы получаете оболочку bash по умолчанию. Оболочка bash поставляется из Unix и при загрузке запускает скрипт.bash_profile. Вы можете изменить этот скрипт для вашего пользователя, чтобы изменить ваши настройки. Этот файл находится по адресу:

~/.bash_profile

Обновление для Маверикс

OS X Mavericks не использует environment.plist - по крайней мере, не для приложений OS X Windows. Вы можете использовать конфигурацию launchd для оконных приложений..Bash_profile по-прежнему поддерживается, поскольку он является частью оболочки bash, используемой в терминале.

Только лев и горный лев

Оконные приложения OS X получают переменные среды из файла environment.plist. Это, вероятно, то, что вы подразумеваете под файлом ".plist". Этот файл находится по адресу:

~/.MacOSX/environment.plist

Если вы внесете изменения в свой файл environment.plist, то в этих приложениях Windows X, включая приложение Terminal, будут установлены эти переменные среды. Любая переменная окружения, которую вы установили в своем.bash_profile, повлияет только на ваши оболочки bash.

Обычно я устанавливаю переменные только в своем файле.bash_profile и не изменяю файл.plist (или файл launchd на Mavericks). Большинству оконных приложений OS X не требуется настраиваемая среда. Только когда приложение действительно нуждается в определенной переменной среды, я могу изменить environment.plist (или файл launchd на Mavericks).

Похоже, что вы хотите изменить файл environment.plist, а не.bash_profile.

И последнее: если вы посмотрите на эти файлы, я думаю, вы их не найдете. Если я правильно помню, их не было на моей первоначальной установке Lion.

Изменить: Вот некоторые инструкции для создания файла plist.

  1. Открыть Xcode
  2. Выберите Файл -> Новый -> Новый файл...
  3. Под Mac OS X выберите Ресурсы
  4. Выберите файл plist
  5. Следуйте остальным инструкциям

Чтобы отредактировать файл, вы можете нажать Control, чтобы открыть меню, и выбрать "Добавить строку". Затем вы можете добавить пару ключ-значение. Для переменных среды ключ - это имя переменной среды, а значение - фактическое значение этой переменной среды.

Как только файл plist создан, вы можете открыть его с помощью Xcode, чтобы изменить его в любое время.

Ваши ".profile" или ".bash_profile" - это просто файлы, которые присутствуют в вашей "домашней" папке. Если вы откроете окно Finder и нажмете имя своей учетной записи на панели избранного... вы их не увидите. Если вы откроете окно терминала и наберете "ls" для вывода списка файлов... вы все равно их не увидите. Но вы можете найти их, используя "ls -a" в терминале. Или, если вы откроете свой любимый текстовый редактор (скажем, TextEdit, поскольку он поставляется с OS X) и выполните File->Open, а затем нажмите Ctrl +Shift+. и нажмите на имя вашей учетной записи (домашняя папка), вы также увидите их. Если вы их не видите, вы можете просто создать их в своем любимом текстовом редакторе.

Теперь, добавление переменных среды довольно просто и удивительно похоже на окна концептуально. В вашем.profile просто добавьте, по одному в строке, имя переменной и ее значение следующим образом:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

и т.п.

Если вы изменяете переменную "PATH", обязательно включите системный PATH по умолчанию, который уже был установлен для вас:

export PATH=$PATH:/path/to/my/stuff

Теперь вот странная часть, вы можете либо открыть новое окно терминала, чтобы новые переменные вступили в силу, либо вам нужно будет набрать ".profile" или ".bash_profile", чтобы перезагрузить файл и применить содержимое. в среду вашего текущего терминала.

Вы можете проверить, что ваши изменения вступили в силу, используя команду "set" в вашем терминале. Просто наберите "set" (или "set | more", если вы предпочитаете разбитый на страницы список) и убедитесь, что вы добавили его в файл.

Что касается добавления переменных среды в приложения с графическим интерфейсом, это обычно не требуется, и я хотел бы услышать больше о том, что вы конкретно пытаетесь сделать, чтобы лучше дать вам ответ на этот вопрос.

Вот немного больше информации конкретно о переменной PATH в Lion OS 10.7.x:

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

  1. Разбор содержимого файла /private/etc/pathsпо одному пути на строку
  2. Разбор содержимого папки /private/etc/paths.d, Каждый файл в этой папке может содержать несколько путей, по одному пути на строку. Порядок загрузки определяется сначала именем файла, а затем порядком строк в файле.
  3. setenv PATH заявление в /private/etc/launchd.conf, который добавит этот путь к пути, уже встроенному в #1 и #2 (вы не должны использовать $PATH для ссылки на переменную PATH, которая была построена до сих пор). Но установка PATH здесь совершенно не нужна, учитывая две другие опции, хотя это место, где другие глобальные переменные среды могут быть установлены для всех пользователей.

Эти пути и переменные наследуются всеми пользователями и приложениями, поэтому они действительно глобальны - выход из системы и не будут сбрасывать эти пути - они созданы для системы и создаются до того, как любому пользователю будет предоставлена ​​возможность войти в систему, поэтому изменения в них требуют перезагрузки системы для вступления в силу.

Кстати, чистая установка OS 10.7.x Lion не имеет environment.plist что я могу найти, так что это может работать, но также может быть устаревшим.

echo $PATH

выводит текущее значение пути

Тогда делай vim ~/.bash_profile и писать

export PATH=$PATH:/new/path/to/be/added

здесь вы добавляете к старому пути, поэтому сохраняете старый путь и добавляете к нему новый путь

тогда делай

source ~/.bash_profile

это выполнит его и добавит путь

затем снова проверьте с

echo $PATH

К сожалению, ни один из этих ответов не решил ту проблему, которая у меня была.

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

Кстати, эти шаги относятся к OSX (Mountain Lion 10.8.5)

  • Откройте Терминал.
  • Запустите следующую команду:

    sudo nano /etc/paths (или же sudo vim /etc/paths для вим)

    нано

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

    echo $PATH

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

Я получил эти детали из этого поста:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/

Я надеюсь, что может помочь кому-то еще

Упрощенное объяснение

Этот пост / вопрос довольно старый, поэтому я отвечу на упрощенную версию для пользователей OS X Lion. По умолчанию OSX Lion не имеет ни одного из следующих файлов:

  • ~ /.Bashrc
  • ~ /.Bash_profile
  • ~ /.Profile

Самое большее, если вы что-то сделали в терминале, вы можете увидеть ~/.bash_history

Что это означает

Вы должны создать файл, чтобы установить стандартные команды bash (обычно в ~/.bashrc). Для этого используйте любой вид редактора, хотя это проще сделать в терминале:

  1. %> emacs.profile
  2. [из w/in типа emacs:] source ~/.bashrc
  3. [из w/in типа emacs:] Ctrl + x Ctrl + s (чтобы сохранить файл)
  4. [из w/in типа emacs:] Ctrl + x Ctrl + c (чтобы закрыть emacs)
  5. %> emacs.bashrc
  6. [из w/in emacs введите / вставьте все ваши команды bash, сохраните и выйдите]

В следующий раз, когда вы выйдете и перезагрузите терминал, он должен загрузить все ваши настройки bash. Для хорошей меры обычно лучше разделить ваши команды на полезные имена файлов. Например, из ~ /.bashrc вы должны иметь source ~/.bash_aliases и поместите все ваши команды псевдонимов в ~/.bash_aliases.

Что сработало для меня, это создать .launchd.conf с нужными мне переменными:

setenv FOO barbaz

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

launchctl setenv FOO barbaz`

По факту, .launchd.cond просто содержит команды launchctl.

Переменные, установленные таким образом, похоже, правильно присутствуют в приложениях с графическим интерфейсом.

Если вы пытаетесь установить переменные LANG или LC_ таким образом и используете iTerm2, убедитесь, что вы отключили параметр "Автоматически устанавливать переменные локали" на вкладке "Терминал" используемого вами профиля. Кажется, это переопределяет переменные среды launchd, и в моем случае я устанавливал битый LC_CTYPE, вызывая проблемы на удаленных серверах (которые получили переменную).

(Кажется, что Environment.plist все еще работает на моем Lion. Вы можете использовать панель настроек RCenvironment для сохранения файла вместо его ручного редактирования или требуемого XCode. По-прежнему работает на Lion, хотя последнее обновление от Snow Leopard эра. Делает это лично моим предпочтительным методом.)

Настройте переменную среды PATH в Mac OS

Откройте программу "Терминал" (по умолчанию она находится в папке "Программы / Утилиты"). Запустите следующую команду

touch ~/.bash_profile; open ~/.bash_profile

Это откроет файл в текстовом редакторе по умолчанию.

Для ANDROID SDK в качестве примера:

Вам нужно добавить путь в каталог инструментов и инструментов платформы Android SDK. В моем примере я буду использовать "/Development/android-sdk-macosx" в качестве каталога, в котором установлен SDK. Добавьте следующую строку:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

Сохраните файл и выйдите из текстового редактора. Запустите ваш.bash_profile, чтобы обновить ваш PATH.

source ~/.bash_profile

Теперь каждый раз, когда вы открываете программу Terminal, в ваш PATH будет включен Android SDK.

Добавление переменных пути в OS X Lion

Это было довольно просто и сработало для меня в терминале:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell

Аналогичный ответ был здесь: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html

Открытый терминал:

vi ~/.bash_profile

Применить изменения к системе (не нужно перезагружать компьютер):

source ~/.bash_profile

(Также работа с macOS Sierra 10.12.1)

У меня была проблема с Eclipse (запущенным как GUI, а не из скрипта) на Maverics, что он не принимал пользовательский PATH. Я попробовал все методы, упомянутые выше, но безрезультатно. Наконец, я нашел самый простой рабочий ответ, основанный на подсказках отсюда:

  1. Перейдите в папку /Applications/eclipse/Eclipse.app/Contents.

  2. Отредактируйте файл Info.plist с помощью текстового редактора (или XCode), добавьте словарь LSEnvironment для переменной среды с полным путем. Обратите внимание, что он также включает / usr/bin и т.д:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. Перезагрузите параметры для приложения с

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
    
  4. Перезапустите Eclipse

Позвольте мне проиллюстрировать вас из моего личного примера в очень излишней форме.

  1. Сначала после установки JDK убедитесь, что он установлен.
  2. Иногда macOS или Linux автоматически устанавливают переменную окружения для вас, в отличие от Windows. Но это не всегда так. Итак, давайте проверим это. Строка сразу после echo $JAVA_HOME будет пустой, если переменная окружения не установлена. Он должен быть пустым в вашем случае.

  3. Теперь нам нужно проверить, есть ли у нас файл bash_profile. Вы видели, что в моем случае у нас уже есть bash_profile. Если нет, мы должны создать файл bash_profile.

  4. Создайте файл bash_profile.

  5. Проверьте еще раз, чтобы убедиться, что файл bash_profile находится там.

  6. Теперь давайте откроем файл bash_profile. MacOS открывает его, используя программу TextEdit по умолчанию.

  7. Это файл, в котором хранятся переменные среды. Если вы открыли новый файл bash_profile, он должен быть пустым. В моем случае он уже был настроен для языка программирования Python и распространения Anaconda. Теперь мне нужно добавить переменную окружения для Java, которая просто добавляет первую строку. ВЫ ДОЛЖНЫ НАПРАВИТЬ ВЕРБАТИМ. ТОЛЬКО первая строка. Сохраните и закройте TextEdit. Затем закройте терминал.

  8. Откройте терминал снова. Давайте проверим, установлена ​​ли переменная окружения.

Я взял идиотский маршрут. Добавил их в конец /etc/profile

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

создал папку /etc/environment, создал в ней файл под названием "oracle" или "что угодно" и добавил в него все, что мне нужно, глобально.

/ etc $ cat /etc/environments.d/Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin

Перед установкой каких-либо переменных среды рекомендуется проверить оболочку терминала по умолчанию с помощью следующих команд:

$ echo $SHELL
/bin/zsh

Если вашим терминалом по умолчанию является /bin / zsh (Z Shell), как в моем случае (лично я предпочитаю Z Shell), вам следует установить эту переменную среды в файле ~/.zshenv со следующим содержимым (в этом примере, устанавливая переменную среды JAVA_HOME, но то же самое относится и к другим):

export JAVA_HOME="$(/usr/libexec/java_home)"

Точно так же для любого другого типа терминала, не упомянутого выше, вы должны установить переменную среды в соответствующем файле env терминала.

Более подробная информация, которая может быть полезна для кого-то:

Благодаря моим собственным исследованиям, я теперь знаю, как устанавливать переменные среды 7 из 8 различных способов. Я пытался получить envar для приложения, которое я разрабатываю под XCode. Я устанавливаю "трассирующие" envars, используя эти разные методы, чтобы сказать мне, какие из них попадают в сферу моего приложения. Из ниже вы можете видеть, что редактирование "схемы" в XCode для добавления аргументов работает, как и "putenv". Что не устанавливало его в этой области: ~/.MACOS/environment.plist, специфичный для приложения plist, .profile и добавление фазы сборки для запуска пользовательского скрипта (я нашел другой способ в Xcode [как минимум] установить один, но забыл, что я назвал трассировщик и не могу найти его сейчас, может быть, на другой машине....)

GPU_DUMP_DEVICE_KERNEL - 3 года

GPU_DUMP_TRK_ENVPLIST равен (null)

GPU_DUMP_TRK_APPPLIST равен (null)

GPU_DUMP_TRK_DOTPROFILE равно (null)

GPU_DUMP_TRK_RUNSCRIPT равно (null)

GPU_DUMP_TRK_SCHARGS равно 1

GPU_DUMP_TRK_PUTENV равно 1

... с другой стороны, если я зайду в Терминал и скажу "установить", кажется, что он получает только один из.profile (я бы подумал, что он также подберет environment.plist, и я Конечно, однажды я увидел в Терминале второй трассировщик, так что с тех пор что-то пошло не так. Длинный день....)

Шаг 1: открыть ~/.bash_profile

Теперь откроется текстовый редактор:

Шаг 2: имя переменной должно быть прописным. в этом примере переменная NODE_ENV

Шаг 3: export NODE_ENV=development

Сохраните его и закройте.

Перезагрузите вашу систему.

Готово.

Чтобы проверить переменную env: откройте терминал и наберите

echo $NODE_ENV 
Другие вопросы по тегам