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/bin
lub dodać go PATH
do ~/.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/bin
lub dodać go PATH
do ~/.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 PATH
ten 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 PATH
katalogu głównym. Aby uruchomić zgodnie z sudo
potrzebą,
sudo /path/to/myscript
zmiana poziomu systemu
Jeśli umieścisz w /usr/local/bin
nim 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 sudo
również jako,
sudo myscript
Teraz wybierz jeden sposób w zależności od potrzeb.
Dodanie położenia pliku do $PATH
zmiennej w ~/.bashrc
pliku 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 ~/.bashrc
plik jest widoczny tylko dla Ciebie jako użytkownika. Wszystkie dokonane zmiany zmiennych są ograniczone do Ciebie. Natomiast dodanie tego pliku, aby /usr/bin
umożliwić pozostanie pliku dla wszystkich użytkowników i ponieważ /usr/bin
jest on obecny w $PATH
zmiennej, chyba że ktoś ją usunie, pozwoli wszystkim użytkownikom na wykonanie go z dowolnej lokalizacji.
Jeśli umieścisz plik wykonywalny w /usr/bin
lub /usr/local/bin
, wówczas będziesz mógł uruchomić ten program, podając tylko nazwę ( your-program
zamiast/usr/local/bin/your-program
).
Jeśli zamiast tego dodasz katalog zawierający program do ~/.bashrc
pliku 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ć ~/.bashrc
plik, 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. :-(