Dodaj plik binarny do mojej ścieżki

15

Mam plik wykonywalny. Chcę wykonać plik wykonywalny w terminalu z nazwą tylko tak, jak inne polecenia.

Mogę umieścić mój plik wykonywalny /usr/local/binlub dodać go PATHdo ~/.bashrc. Oba będą działać.

Co jest lepsze? Czy jest jakaś różnica?

Mohammad Reza Rezwani
źródło

Odpowiedzi:

12

Załóżmy na przykład, że masz plik wykonywalny myscript. Musisz uruchomić go z terminala, ponieważ

/path/to/myscript

Zmiana na poziomie użytkownika

Jeśli dodasz PATHten plik wykonywalny do ~/.bashrc, możesz uruchomić plik wykonywalny z nazwą tylko z dowolnego miejsca ( wspomniano już o Avinash Raj ), ponieważ

myscript

Ale zmiana będzie miała wpływ na poziomie użytkownika . Oznacza to, że jeśli masz innych użytkowników, nie mogą oni uzyskać dostępu do pliku wykonywalnego tylko z nazwą. Jeśli mają odpowiednie uprawnienia, muszą uruchomić plik wykonywalny jako,

/path/to/myscript

Ponadto nie będzie można uruchomić skryptu tak sudo, ponieważ nie ma go w PATHkatalogu głównym. Aby uruchomić zgodnie z sudopotrzebą,

sudo /path/to/myscript

zmiana poziomu systemu

Jeśli umieścisz w /usr/local/binnim skrypt , będzie on dostępny dla całego systemu i dla wszystkich użytkowników. W takim przypadku każdy użytkownik może uruchomić plik wykonywalny jako (pod warunkiem posiadania odpowiednich uprawnień)

myscript

W takim przypadku możesz uruchomić plik wykonywalny sudorównież jako,

sudo myscript

Teraz wybierz jeden sposób w zależności od potrzeb.

souravc
źródło
2

Dodanie położenia pliku do $PATHzmiennej w ~/.bashrcpliku pozwoli tylko na wykonanie z dowolnej lokalizacji, natomiast umieszczenie go /usr/bin/pozwoli wszystkim użytkownikom w systemie na wykonanie tego pliku z dowolnej lokalizacji.

Dlaczego? Ponieważ Twój ~/.bashrcplik jest widoczny tylko dla Ciebie jako użytkownika. Wszystkie dokonane zmiany zmiennych są ograniczone do Ciebie. Natomiast dodanie tego pliku, aby /usr/binumożliwić pozostanie pliku dla wszystkich użytkowników i ponieważ /usr/binjest on obecny w $PATHzmiennej, chyba że ktoś ją usunie, pozwoli wszystkim użytkownikom na wykonanie go z dowolnej lokalizacji.

Praca w
źródło
1

Jeśli umieścisz plik wykonywalny w /usr/binlub /usr/local/bin, wówczas będziesz mógł uruchomić ten program, podając tylko nazwę ( your-programzamiast/usr/local/bin/your-program ).

Jeśli zamiast tego dodasz katalog zawierający program do ~/.bashrcpliku PATH, wówczas dowolny plik wykonywalny znajdujący się w tym katalogu można uruchomić, wpisując tylko jego nazwę.

Avinash Raj
źródło
1
Ta informacja jest fałszywa, możesz nadal uruchomić plik wykonywalny, nawet jeśli nie znajdujesz się w „tym katalogu”.
Lekensteyn
Jak to jest fałszywe ?, proszę wyjaśnić nieco więcej.
Avinash Raj
1
Ok, z trudem przeczytałem twoją odpowiedź (i tym samym popełniłem błąd), więc zredagowałem ją, aby usunąć zamieszanie i ponownie napisałem opinię. Mam nadzieję, że to pomaga.
Lekensteyn
Pytanie brzmi: co jest lepsze? Czy jest jakaś różnica? Praktycznie nie powiedziałeś nic więcej niż PO.
Radu Rădeanu
Odpowiedziałem na pytanie systemu operacyjnego, ale nie w krótkim formacie.
Avinash Raj
0

Jako uzupełnienie odpowiedzi @souravc ...

W przypadku „zmiany poziomu użytkownika” zamiast edytować ~/.bashrcplik, możesz po prostu utworzyć katalog $HOME/bin/i umieścić w nim skrypty.

Katalog zostanie automatycznie dodany do PATH(przynajmniej od Ubuntu 12.04), co oznacza, że ​​będziesz mógł uruchomić wszystkie skrypty / pliki wykonywalne w tym katalogu za pomocą prostego:

myscript

Tylko moje 2 centy. :)

PS - Próbowałem opublikować to jako komentarz do odpowiedzi @souravc, ale nie miałem wystarczającej reputacji. :-(

Niespokojny
źródło