49

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

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

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

3 ответа3

39

Основной ответ: вы, вероятно, хотите /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 , но делает это таким образом, чтобы можно было легко удалять вещи и позже возвращаться в ванильное состояние.

9

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

Если вы используете 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 , который имеет другой синтаксис.

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

7

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .