Jak mogę wykonać program z dowolnego miejsca?


75

Co powinienem zrobić, jeśli chcę móc uruchomić dany program niezależnie od mojego bieżącego katalogu? Czy powinienem utworzyć symboliczne łącze do programu w /binfolderze?


5
nie, powinieneś użyć zmiennej PATH powłoki.
— msw

7
Myślę, że dobrze byłoby utworzyć ~/bin/folder osobisty , dodać TO do swojej ścieżki i utworzyć dowiązania symboliczne w tym folderze do wszystkiego, co chcesz, aby było wykonywalne z dowolnego miejsca.
— frabjous

1
Możesz także ustawić alias z pełną ścieżką do pliku binarnego, który chcesz uruchomić.
— datasmurf

Odpowiedzi:


53

Jeśli wpiszesz tylko export PATH=$PATH:</path/to/file>w wierszu polecenia, będzie to trwało tylko przez czas trwania sesji.

Jeśli chcesz to zmienić na stałe, dodaj export PATH=$PATH:</path/to/file>do pliku ~ / .bashrc (tylko na końcu jest w porządku).


11
Dzięki, to działa. W przypadku początkujących, takich jak ja, pamiętaj o pominięciu nawiasów kątowych <>. Tak jak: $ PATH: / your / file / path
— SAm

4
Nie dołączaj również nazwy pliku programu do ścieżki.
— Olli Niemitalo

23

Krótka odpowiedź brzmi: aby uruchomić program, bez względu na katalog, musisz mieć katalog programu na ścieżce wyszukiwania. Problem można rozwiązać, umieszczając program w folderze, który już znajduje się na tej ścieżce lub dodając nowy folder do ścieżki - albo zadziała. Najlepsza odpowiedź zależy od:

Czy ten program to pobrany program, który sam skompilowałeś ze źródła?

Prawdopodobnie będzie już miał mechanizm instalacyjny. W folderze, który skompilowałeś program, jako root, uruchom polecenie „make install”

Czy ten program to pobrany program, który chcesz udostępnić jako część standardowych programów na komputerze?

Sensowne jest umieszczenie tego rodzaju aplikacji w standardowym folderze. dość powszechne jest używanie katalogów takich jak / usr / local / bin dla takich programów. Aby to zrobić, musisz mieć dostęp do konta root.

Jest to program, który napisałeś dla siebie i / lub nie masz żadnych specjalnych uprawnień na komputerze.

Utworzenie folderu w katalogu domowym o nazwie „bin” i umieszczenie w nim programu. Konieczne może być zmodyfikowanie skryptu logowania, aby dodać pełną ścieżkę do tego folderu (np. / Usr / home / jeremy / bin)

Chociaż możesz po prostu dodać jego bieżący katalog do ścieżki wyszukiwania, będziesz musiał to robić z każdym nowym programem - i to więcej pracy w dłuższej perspektywie.


15

Umieszczenie łącza do pliku w /binkatalogu nie jest najlepszym rozwiązaniem z wielu powodów.

  • Jeśli rzeczywisty plik wykonywalny znajduje się w miejscu, którego niektórzy użytkownicy nie widzą ani nie wykonują, widzą go jako zły link lub program dysfunkcyjny.
  • /binKatalog ma być zarezerwowane dla programów, które są wymagane do uruchomienia systemu (takie rzeczy chmod, mkdiritp).

Możesz faktycznie umieścić (zainstalować) plik wykonywalny w, /usr/bin/a nawet /usr/local/bin/. Oczywiście w tym momencie ręcznie zainstalowałeś program; Twoja dystrybucja nie będzie śledzić tego, co robi z pozostałymi programami - będziesz musiał ręcznie zaktualizować, jeśli to konieczne, i ręcznie usunąć, jeśli chcesz, aby zniknął. Musisz także wiedzieć, od jakich pakietów to zależy (wygląda na to, że już korzystasz z programu, więc to załatwione, ale ogólnie ...).

O ile nie konfiguruję programu, którego oczekuję od innych użytkowników, zwykle nie robię tego: tworzę katalog bin tylko dla siebie w katalogu domowym i edytuję profil powłoki, aby dodać go ~/bin/do PATHzmiennej środowiskowej. Łatwiej jest mi śledzić programy, które zainstalowałem w ten sposób, ponieważ są one oddzielone od reszty systemu.


6

Jeśli chcesz uruchomić polecenie foow katalogu, w którym aktualnie znajduje się powłoka, zasadniczo masz dwie opcje:

  1. Wpisz ./foow wierszu poleceń powłoki.

  2. Dodaj .katalog ( .to nazwa „bieżącego katalogu”) do PATHzmiennej środowiskowej; jak to zrobisz, zależy od używanej powłoki:

    • dla powłok typu Bourne'a (bash, zsh, ksh itp.) piszesz ( więcej informacji na tej stronie ):

      export PATH=$PATH:.
      
    • dla powłok typu csh (tcsh, csh) piszesz ( więcej informacji na tej stronie ):

      set path = ( $path .)
      

Zauważ, że 2. stanowi zagrożenie bezpieczeństwa w systemach z wieloma użytkownikami: wyobraź sobie, że cdkatalogujesz, /tmpa złośliwy użytkownik utworzył tam plik binarny złośliwego oprogramowania ls.


2
tak, myślę, że opcje pokazują, że Unix pozwala ci robić rzeczy, co jest uważane za złą praktykę. Dodawanie na twoją ścieżkę mogą również powodować inne działania niepożądane, które są na ogół złe.
— The Unix Janitor

1

Bałaganowanie PATHpozwala omyłkowo uruchomić złośliwe programy. Standardowo jest instalowanie „lokalnych” rzeczy pod /usr/local(patrz FHS , który kodyfikuje użycie Uniksa: nieco przestarzałe, ale daje uzasadnienie)., /usr/local/binZwykle jest PATHdla wszystkich użytkowników.

Moje „zainstalowane lokalnie” programy są $HOME/binwłączone, ustawione w standardowym tańcu przez ./configure --prefix=$HOME ..., w połączeniu z kilkoma aliasami (bash), aby wybrać np. Samoukompilowanego gita nad systemem pierwszym (te, które nie kolidują, znajdują się PATHna samym końcu).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.