3

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

3 ответа3

7

Вам необходимо изменить переменную среды 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. (Вы должны выйти из системы и снова войти в нее, чтобы проникнуть во все части системы.)

2

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

0

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

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

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