Mac OS X: обычные места, где должны жить бинарные файлы

47014
Jason S

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

  1. Какие обычные пути используются для чего-то подобного? /usr/bin? Существуют ли разные варианты: один, если я хочу, чтобы он был для всех пользователей, и один, если я хочу, чтобы он был только для определенного пользователя, например, моей учетной записи администратора?

  2. Или я должен поместить его в свой собственный каталог в каталоге приложений и добавить его в путь? Если да, какой файл контролирует, где указан путь?

47

3 ответа на вопрос

38
Telemachus

Основной ответ: вы, вероятно, хотите /usr/local/bin. В зависимости от того, какой у вас MacOS, вам может потребоваться обновить настройки по умолчанию $PATH. Смотрите ниже для более подробной информации.

ОБНОВЛЕНИЕ 12-01-2018 В какой-то момент, так как я написал свой оригинальный ответ, Apple изменила его по умолчанию $PATH. В результате, многое из того, что я скажу ниже, не имеет отношения к последним Mac. Если вы наберете echo $PATHв терминале, и /usr/local/binпервым, то вы можете игнорировать все ниже об изменении вашего $PATH.

Оригинальный ответ

Маки необычны в этом отношении. $PATHПеременная по умолчанию для обычного пользователя выглядит следующим образом:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

Поставив /usr/local/bin после /usr/bin и /bin, Mac переворачивает обычную систему. Обычно вы можете что-то вставить /usr/local/bin(скажем, второй интерпретатор Perl, скомпилированный нестандартным способом), и тогда обычный пользователь сначала обратится к пользовательскому, а не общесистемному. Это хорошо. Пользователи могут получить варианты, но система остается чистой. Однако, учитывая настройки Apple по умолчанию $PATH, предметы в /usr/binили /binбудут найдены раньше, чем что-либо в /usr/local/bin. (Это в основном побеждает цель установки, например, пользовательского Perl /usr/local/bin.)

Чтобы это исправить, вы можете изменить обычного пользователя, $PATHотредактировав .profileфайл в его домашнем каталоге. (Этот файл может не существовать, если у вас новая установка. В этом случае создайте его.)

Полусвязанный: Homebrew обеспечивает отличное управление пакетами для Mac. По умолчанию Homebrew устанавливает программное обеспечение в систему /usr/local, но делает это таким образом, чтобы было очень легко удалить вещи и позже вернуться в состояние ванили.

На моем только что установленном OsX 10.13.6 (High Sierra) путь по умолчанию содержит / usr / local / bin (хотя папка даже не существует) по умолчанию. Legolas 5 лет назад 1
@Legolas Apple, похоже, изменила то, как они справляются с этим. Я буду редактировать пост. Telemachus 5 лет назад 0
9
avstrallen

/usr/local/binи /usr/local/sbinих стоит добавить к вашему пути, так как многие сборочные файлы для исходных сборок по умолчанию установлены там.

Если вы используете MacPorts, то стоит добавить /opt/local/binи /opt/local/sbinкак хорошо.

Лучший способ сделать это - добавить

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

к .bashrcфайлу в вашем домашнем каталоге (который скрыт, так что CLI - лучший способ сделать это), или, если вы хотите изменить системный путь, добавьте ту же строку в /etc/bashrc(не скрытый), но вы будете надо sudoсделать это.

Если у вас .bashrcдома нет пользователя, вы можете создать его и добавить к нему эту строку, но не забудьте изменить права доступа к файлу, который вы создаете, чтобы сделать его читаемым для данного пользователя (очевидно, не имеет значения, если вы ' делаю это для вашего собственного профиля).

В $PATHконце добавляется системный путь по умолчанию ко всему, что вы положили раньше. Обратите внимание, что система ищет двоичные файлы в указанном порядке, поэтому, если вы устанавливаете двоичный файл /usr/localили /opt/localон также установлен по умолчанию в системе, сначала будут найдены версии, которые вы устанавливаете, что может (хотя и редко) расстраивать вещи. На это стоит обратить внимание.

Хорошая информация здесь .

Я должен отметить, что вышеизложенное предполагает, что вы используете Bash для оболочки, которая используется по умолчанию в Mac OS X v10.4 (Tiger) и Mac OS X v10.5 (Leopard), но не в более ранних системах, которые использовали tcshвместо этого, который имеет другой синтаксис.

Надеюсь, это поможет...

`/ usr / local / bin` уже находится в OS X по умолчанию` $ PATH` (хотя уже слишком поздно - см. мой ответ). Если вы используете MacPorts, его установщик должен отредактировать ваш путь по мере необходимости - по крайней мере, так всегда было в моем опыте. Тем не менее, пользователям полезно знать, что они делают (и почему). Telemachus 15 лет назад 1
@Telemachus: каждый раз, когда я создаю Mac для себя, я первым делом настраиваю адский путь, поэтому я никогда не могу вспомнить, что является стандартным, а что моим! avstrallen 15 лет назад 0
Я знаю, что вы думаете об установщике MacPorts, настраивающем пути в .profile, но у меня был случай в прошлом, когда по какой-то причине, я не знаю, что, это не удалось (что смутило меня какое-то время!) ... так что с тех пор я стараюсь подключить его вручную ... avstrallen 15 лет назад 1
«который скрыт, поэтому CLI - лучший способ сделать это»: тупой вопрос, как вы запускаете TextEdit для файла из командной строки? Jason S 15 лет назад 0
Нет такого понятия, как тупой вопрос: используйте команду `open` с именем файла в качестве аргумента, и она должна открываться с тем, что установлено в качестве текстового редактора по умолчанию (TextEdit как стандарт). avstrallen 15 лет назад 0
@Adamvs: вы были правы, упомянув, что нужно MacPorts в $ PATH, поскольку программа установки может завершиться с ошибкой (или что-то может помешать вашему профилю позже). Я только что упомянул, что установщик _should_ добавить необходимую информацию к пути. Насколько я помню, сейчас даже есть диалог с вопросом: «Вы хотите, чтобы я отредактировал ваш профиль, так что бла-бла». Но я могу думать о Финке там. Telemachus 15 лет назад 0
Чтобы уточнить: в CLI выполните `open ~ / .bashrc`, и он откроет файл, если он там, или создаст его, если его нет. Чтобы отредактировать общесистемную конфигурацию, выполните `sudo open / etc / bashrc` и введите пароль. Надеюсь, вы все разберетесь ... avstrallen 15 лет назад 0
Ой, простите, он не создаст файл, если его там нет ... если вам нужно его создать, сначала сделайте `touch ~ / .bashrc`, чтобы создать файл. avstrallen 15 лет назад 0
@Telemachus - это была странная вещь в моей проблеме с установкой MacPorts - он просто исправил файл .profile, но система его не подняла. Вот почему мне потребовалось так много времени, чтобы решить эту проблему: установщик MacPorts, казалось, работал правильно, как и каждый раз. Это до сих пор для меня загадка ..! Если кто-нибудь знает, почему это могло произойти, я хотел бы услышать об этом. avstrallen 15 лет назад 0
7
John Topley

Я, как правило, идут с /usr/local. Вот хорошее объяснение, почему, что относится к стандарту иерархии файловой системы (FHS).), Который в Поворот говорит о /usr/local:

Третичная иерархия для локальных данных, специфичных для этого хоста. Обычно имеет дополнительные подкаталоги, например, bin, lib, share.⁢

Да, это почти то же самое, что и в других операционных системах * nix в этом отношении. jtbandes 15 лет назад 0
Пожалуйста, процитируйте основные части ответа по ссылочной ссылке (ссылкам), так как ответ может стать недействительным, если связанные страницы изменятся. DavidPostill 7 лет назад 0