Kontekst: Próbuję uruchomić aplikację automatycznie po zalogowaniu. W tym celu muszę wybrać path
dla aplikacji.
Oto ścieżki, na które już spojrzałem:
/sbin
/usr/sbin
/usr/local/bin
/usr/share/
Jeśli to może pomóc, aplikacja, którą próbuję znaleźć, nazywa się „ ScreenCloud ” i pobrałem ją z Centrum oprogramowania Ubuntu.
Ale nie mogę go znaleźć, czy mogę wiedzieć, gdzie jest zainstalowane określone oprogramowanie? Ponieważ nawet gdybym go znalazł, chciałbym uniknąć tego samego problemu w przyszłości.
.deb
pakietu, ale musisz dodać PPA.screencloud.sh
nascreencloud
i podejrzewałem, że zostało przeniesione/opt
. Ta część mojej odpowiedzi wskazywała, jaktype
iwhich
nie mogę znaleźć,screencloud
alelocate
chciałbym.screencloud.sh
faktycznie nadal istnieje, ale nie jestem pewien, czym różni się odscreencloud
tego, że.sh
plik jest skryptem iscreencloud
nie ma go. Naprawdę nie znam tej aplikacji. Poniżej/usr/bin/
znajduje sięscreencloud
ascreencloud.sh
, a takżescreencloud-
następujący po nim numer wersji, taki jakgimp
.Odpowiedzi:
Znajdź ścieżkę do pliku wykonywalnego
Najlepszym sposobem
type executable
Sprawdź to pytanie, aby dowiedzieć się więcej o tym, jak
type
lepiej. (Dzięki, komentarze!)Inaczej
whereis executable
which executable
Te polecenia przeszukują tylko zmienną PATH (
echo $PATH
), dlatego nie są poprawne w niektórych przypadkach (funkcje wbudowane, aliasy lub funkcje bash i więcej).źródło
type
jest preferowane,which
ponieważ jest wbudowane w powłokę i może określić, czy polecenie jest aliasem. To też było dla mnie nowe!type
preferowane: dlaczego nie użyć „które”? Czego więc użyć?which
jest to rzeczywiście przydatne w konkretnym kontekście skryptów powłoki. Poza tym kontekstem jest jednaktype
prawie zawsze lepszym wyborem.Znajdź lokalizację polecenia wewnątrz lub na zewnątrz ścieżki
Załóżmy, że chcesz znaleźć lokalizację
uname
programu wyświetlającego informacje o systemie. Jeśli chcesz wiedzieć, w którym katalogu jest przechowywane polecenie najwyższego poziomu, masz wiele opcji:Znajdź zalety
Ostatnia opcja
locate
zwraca wszystkie pliki zawierająceuname
nie tylko program uruchamiany z wiersza polecenia.Zaletą
locate
jest to, że znajdzie polecenia spoza twojej ścieżki wyszukiwania.type -a
(preferowane zamiast prostychtype
) iwhich
znajdzie tylko polecenia na ścieżce wyszukiwania. Aby zobaczyć swoją ścieżkę wyszukiwania, użyjecho $PATH
.Weźmy na przykład tę odpowiedź w Jak uruchomić screencloud? :
locate screencloud
Komenda będzie go znaleźć, alewhich screencloud
itype -a screencloud
nie będzie, ponieważ:screencloud.sh
tylkolocate
wyszukiwanie komendy przy częściowym dopasowaniu./opt/screencloud
prawdopodobnie nie znajduje się na ścieżce wyszukiwania.which
itype
szukaj tylko plików wykonywalnych w ścieżce wyszukiwania.Uwaga: to jest starsza odpowiedź. Modern ScreenCloud jest wywoływany z
screencloud
.Zaletą lokalizowania nad
find
poleceniem jest to, że może być setki, a nawet tysiące razy szybsze. Również uruchomieniefind
od zera/
spowoduje wiele błędów uprawnień, z którymi się nie spotkaszlocate
.Znajdź wady
Jeśli właśnie zainstalowałeś program dzisiaj, będziesz musiał użyć go
sudo updatedb
do aktualizacji bazy danych lokalizatora.źródło
Użyj następującego polecenia, aby wyświetlić listę wszystkich
$PATH
katalogów:Użyj następującego polecenia, aby znaleźć pełną ścieżkę dla
screencloud
:Jeśli użyłeś
apt
,apt-get
lub Centrum Oprogramowania Ubuntu do zainstalowania pakietu, możesz użyć następującego polecenia, aby znaleźć pełną ścieżkę:Zakładając, że używana tego repozytorium , powinieneś być w stanie znaleźć
screencloud
w/usr/bin/
.Pełna ścieżka to:
lub
Jeśli jednak korzystasz ze sklepu snapcraft zgodnie z linkiem podanym w pytaniu, ścieżka będzie znajdować się w następującym katalogu:
więcej informacji
Pamiętaj również, że w Ubuntu rozróżniana jest wielkość liter, więc musisz używać małych liter bez wielkich liter.
źródło
/snap/bin
!