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?
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?
Odpowiedzi:
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.
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.
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ę.
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. :-(