Как изменить версию исполняемого файла Unix по умолчанию?

3447
nipponese

В настоящее время на моей машине с OSX установлены две версии одного и того же исполняемого файла: одна находится в usr / bin, а другая - в Macports. Когда я запускаю which, терминал возвращает местоположение в версию usr / bin. Есть ли единый способ изменить установку по умолчанию, или у каждого приложения есть свой собственный параметр команды для этого?

3

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

7
Daniel Pittman

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

Когда что-то в Unix ищет приложение с заданным относительным путем (например, clangвместо /usr/bin/clang), PATHразбивается на :символ, а затем ищется по порядку.

Например: если ваш PATH, /opt/local/bin:/bin:/usr/binто clangбудет искать /opt/local/bin/clang, и если этого не хватает, /bin/clangи т. д.

Технически, у каждого процесса есть свой способ сделать это - ничто не заставляет их следовать соглашению об использовании $PATH, но так было достаточно долго, что в значительной степени все делает.

Другое соображение заключается в том, что каждый процесс имеет свою собственную среду - копия PATHвключена в него. Это включает launchd, который отвечает за пользовательский интерфейс и любое приложение, запускаемое из этого.

Таким образом, вы можете изменить это в вашей оболочке скриптов инициализации ( .bash_profile, .bashrc, .profileи т.д.), но это не будет работать, если, например, вы запускаете Vim или Emacs в качестве приложения с графическим интерфейсом.

Вы также можете изменить /etc/pathsили добавить файл /etc/paths.d, который станет частью стандартной среды для всего, включая все приложения, запускаемые на Mac. (Вы должны выйти из системы и снова войти в нее, чтобы проникнуть во все части системы.)

Чтобы добавить к ответу Дэниела: MacPort должен был добавить оператор экспорта в ваш .profile или .bash_profile-- Это будет выглядеть так: `export PATH = / opt / local / bin: / opt / local / sbin: $ PATH` Если это линии там нет, добавьте ее и перезапустите терминал. Вы также можете набрать `echo $ PATH`, чтобы увидеть, что в данный момент установлено в вашей оболочке. InChargeOfIT 12 лет назад 0
Я понял концепцию $ PATH, но на самом деле это не отвечает на мой вопрос, что заставляет меня задуматься, не ошибочно ли начинать с: Мой текущий .profile выглядит так: `export PATH = / opt / local / bin: / opt / местные / SBIN: / USR / местные / MySQL / бен: $ PATH: / USR / местные / мерзавец / bin`. Однако, например, установка clang по умолчанию находится в usr / bin. Мне не ясно, как заставить установку Macports быть установкой по умолчанию. nipponese 12 лет назад 0
Ой. Я обновил ответ, чтобы отразить, как поиск PATH осуществляется на практике, но: поместите каталог, содержащий исполняемые файлы, которые вы предпочитаете ранее, в PATH. Кроме того, на уровне Unix нет концепции приложения по умолчанию, как на уровне OSX UI. Это просто «все, что приходит первым на пути». Daniel Pittman 12 лет назад 0
2
Ignacio Vazquez-Abrams

Если модификация $PATHпо какой-либо причине невозможна, вы можете создать псевдоним, который вызывает исполняемый файл в соответствующем каталоге.

0
Gilles Quenot

PATHПеременная определяет, где ваши команды.

Вы можете изменить эту переменную в вашем /etc/pathsфайле. Вы должны убедиться, что /usr/binэто раньше, чем другие.