Mac OS X: как запустить двоичные файлы, находящиеся за пределами usr/local/bin?

Я установил программу, которая автоматически не помещала свои двоичные файлы в usr/local/bin. Это означает, что ошибки «команда не найдена» возникают очень часто всякий раз, когда я запускаю сценарии в этой программе. Я могу исправить это, скопировав двоичные файлы в каталог usr/local/bin, но я не хочу делать это каждый раз для каждого отдельного двоичного файла. Что было бы более эффективным способом заставить скрипты работать?

Заранее большое спасибо!


person merah    schedule 28.07.2014    source источник


Ответы (2)


Исполняемые файлы просто разрешаются через переменную $PATH. Он настроен на что-то вроде

PATH="/bin:/usr/local/bin:..."

(Попробуйте $ echo $PATH.)

Когда вы вводите команду:

$ foo

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

/bin/foo 
/usr/local/bin/foo

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

$ /home/me/bin/foo
$ cd /home/me/bin
$ ./foo

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

export PATH="$PATH:/home/me/bin"

(Поместите это в сценарий запуска вашей оболочки, например ~/.profile, чтобы автоматизировать это.)

В качестве альтернативы, создайте символическую ссылку на исполняемый файл где-нибудь на вашем пути:

$ ln -s /home/me/bin/foo /usr/local/bin/foo
person deceze♦    schedule 28.07.2014
comment
OSX не имеет ~/.profile (это ~/.bash_profile), и ваши аргументы символической ссылки идут в обратном порядке. - person trojanfoe; 28.07.2014
comment
В OS X есть ~/.profile, я его использую. А ln определяется как ln [-Ffhinsv] source_file [target_file]. - person deceze♦; 28.07.2014
comment
Конечно, вы можете использовать ~/.profile, но использование ~/.bash_profile кажется более нормальным вариантом. Что касается командной строки ln, я не думаю, что вы продумали ее должным образом. Подожди; если новый двоичный файл не находится в /home/me/bin? - person trojanfoe; 28.07.2014
comment
Хорошо, я вижу. Я неправильно понял. Я бы все равно ожидал, что $HOME/bin будет на пути. - person trojanfoe; 28.07.2014
comment
Да, пример ln основан на предыдущем примере с ~/bin. - person deceze♦; 28.07.2014
comment
Также: stackoverflow.com/questions/6751252/ - оба варианта допустимы. - person deceze♦; 28.07.2014
comment
Я все равно голосую за закрытие вопроса; это основной пользовательский материал. - person trojanfoe; 28.07.2014
comment
Не могу с этим не согласиться, к сожалению. ;) - person deceze♦; 28.07.2014

Добавьте каталог, содержащий двоичный файл, в переменную среды $PATH, отредактировав ~/.bash_profile:

export PATH=$PATH:/your/new/path

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

person trojanfoe    schedule 28.07.2014