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