Dodanie nowego pliku wykonywalnego do zmiennej środowiskowej PATH?

16

Próbuję zainstalować tę bibliotekę o nazwie phantomjs.

Instrukcje zawierają ten wiersz:

http://code.google.com/p/phantomjs/wiki/BuildInstructions

Dla wygody skopiuj wykonywalny bin / phantomjs.app / Contents / MacOS / phantomjs do jakiegoś katalogu w ŚCIEŻCE.

Jak mam to zrobic?

Złupić
źródło
Nie sądzę, żebyś musiał się martwić, że umieścisz to na swojej drodze, ponieważ bin już tam jest. Ale jeśli chcesz, możesz dowiedzieć się, jak to zrobić tutaj: troubleshooters.com/linux/prepostpath.htm
@cksum, ale jest to ścieżka względna; nie wiemy, co jest przed „bin”.
bneely
@prawdopodobnie tak, ale nie ma ~ / bin. Jedynymi lokalizacjami są / bin, / usr / bin i / usr / local / bin. Wszystkie są już na twojej drodze. Jeśli uruchomisz path, zobaczysz domyślnie następujące informacje: PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/binNie przeglądałem skryptu instalacyjnego danego programu, ale bardzo mało prawdopodobne jest zainstalowanie go gdzieś we własnym folderze „bin”. I nie można dodawać ścieżek względnych AFAIK. Jestem skłonny myśleć tylko o literówce z niechlujnego przewodnika.
Wiem, że ścieżek względnych nie można dodać; Twierdzę, że ścieżka w pytaniu jest ścieżką względną, ponieważ nie zaczyna się od / lub ~.
bneely

Odpowiedzi:

10

Aby dowiedzieć się, co jest w zmiennej PATH, należy otworzyć okno terminala i uruchom polecenie: echo $PATH. Dane wyjściowe to rozdzielona dwukropkami lista katalogów, których zawartość można uruchomić bez określania pełnej ścieżki.

Ponieważ / usr / bin znajduje się na mojej ścieżce, mogę uruchomić wpolecenie, wpisując wzamiast pełnego /usr/bin/w.

Ponadto nie musisz przenosić pliku wykonywalnego do jednego z wymienionych katalogów PATH. Inne opcje obejmują

  • Pozostaw plik wykonywalny tam, gdzie jest, i link do niego z jednego z katalogów PATH
  • Dodaj katalog do PATH, jawnie ustawiając go w skrypcie logowania dla twojej powłoki
szczerze
źródło
Postępuj zgodnie z radą @ Gerry w drugiej odpowiedzi i dowiązajsymbolicznie . To najczystszy sposób!
cregox
Jeśli przypadkiem potrzebujesz pełnego katalogu PATH, ponieważ jest w nim wiele plików wykonywalnych, do których potrzebujesz dostępu, nie ma innej opcji i po to PATHjest. Obecnie używamy ~ / .bash_profile, aby dodać do ścieżki .
cregox
20

Najczystszym sposobem na osiągnięcie tego byłoby symlinkowanie pliku binarnego w katalogu / usr / local / bin (który domyślnie jest zawarty w PATH). Może być konieczne utworzenie tego katalogu, jeśli jeszcze nie istnieje. Możesz sprawdzić, czy te katalogi są już w ŚCIEŻCE, otwierając Terminal.app i wpisując:

echo $PATH

Spowoduje to wygenerowanie rozdzielonej dwukropkami listy wszystkich katalogów w zmiennej PATH.

Jeśli katalogi / usr / local lub / usr / local / bin jeszcze nie istnieją, wykonaj następujące czynności:

sudo mkdir -p /usr/local/bin

Symlinizuj plik binarny, zamień (/ Applications) na ścieżkę do phantomjs.app, jeśli różni się:

sudo ln -s /Applications/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin

Teraz nie powinieneś mieć problemów z wykonywaniem phantomjs z wiersza poleceń.

Gerry
źródło
+1,ls /usr/local/bin/ || sudo mkdir /usr/local/bin/ ; sudo ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
Jose Carlos Ramos Carmenates
3

Wracając do źródła problemu, jeśli instalujesz phantomjs, możesz użyć npm, aby to ułatwić.

Jeśli to zrobisz, możesz po prostu uruchomić:

npm install -g phantomjs-prebuilt

który zainstaluje plik binarny w odpowiednim katalogu bin. (flaga -g wskazuje npm, że pakiet ma zostać zainstalowany globalnie)

ShaneMit
źródło
0

Podczas symlinkowania pliku z innego directoy, wolę kopiować / przenosić plik usr/local/bin, aby nie mieć go „dwa razy”.

cp bin/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin
Niko
źródło