Come conoscere il percorso di un determinato software?


13

Contesto: sto tentando di avviare automaticamente un'applicazione quando eseguo l'accesso. Per questo ho bisogno di selezionare pathper l'applicazione.

inserisci qui la descrizione dell'immagine

Ecco i percorsi che ho già esaminato:

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

Se questo può aiutare, l'applicazione che sto cercando di trovare si chiama " ScreenCloud " e l'ho scaricata da Ubuntu Software Center.

Ma non riesco a trovarlo, esiste un modo per sapere dove è installato un determinato software? Perché anche se lo trovassi per questo, vorrei evitare di avere lo stesso problema in futuro.


2
Non funziona se si digita screencloud nella riga di comando?
Graham,

L'hai preso dallo snap store o dal centro software di Ubuntu perché non riesco a trovarlo in nessuno dei repository apt di Ubuntu.
mchid

2
@mchid Non stavo affrontando il link di OP ma piuttosto il tuo commento: "perché non riesco a trovarlo in nessuno dei repository apt di Ubuntu" Screencloud può essere installato dal .debpacchetto ma è necessario aggiungere PPA.
WinEunuuchs2Unix

1
@mchid Sapevo che il comando era stato cambiato da screencloud.shin screencloude sospettavo che fosse stato spostato /opt. Quella parte della mia risposta stava sottolineando come typee whichnon avrebbe trovato screencloudma locateavrebbe.
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix Bene. screencloud.shin realtà esiste ancora, ma non sono sicuro di come differisca dal screencloudfatto che il .shfile è uno script e screencloudnon lo è. Non ho davvero familiarità con questa applicazione. Sotto /usr/bin/c'è a screencloud, a screencloud.sh, e anche a screencloud-seguito dal numero di versione simile a come gimpè.
mchid

Risposte:


16

Trova il percorso di un eseguibile

Miglior modo

  • type executable

Dai un'occhiata a questa domanda per saperne di più su come typeè meglio. (Grazie, commenti!)

Altri modi

  • whereis executable
  • which executable

Quei comandi cercano solo nella variabile PATH ( echo $PATH), quindi non sono validi in alcuni casi (funzioni integrate, alias o funzioni bash e altro).


3
incredibilmente, questa non era ancora una domanda su chiedere Ubuntu. bella domanda @Ced!
Tatsu,

Anzi, non ci credo quasi!
Biggybi,

1
Ho scoperto da un'altra domanda che typeè preferibile in whichquanto è una shell incorporata e può determinare se un comando è un alias. Anche per me era una novità!
Arronical

1
Vedi qui per una (lunga) spiegazione del perché typeè preferito: perché non usare "quale"? Cosa usare allora?
terdon,

1
@mchid si applicano tutti i punti nella risposta. Compresa la sezione "Usa casi" che sottolinea che whichè davvero utile nel contesto specifico degli script di shell. Al di fuori di tale contesto, tuttavia, typeè quasi sempre la scelta migliore.
Terdon

1

Trova la posizione del comando all'interno o all'esterno del percorso

Supponiamo di voler trovare la posizione di unameun programma che elenca le informazioni di sistema. Se vuoi sapere in quale directory è memorizzato il comando di livello superiore hai una serie di opzioni:

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

Individua i vantaggi

L'ultima opzione locaterestituisce tutti i file contenenti unamenon solo il programma eseguito dal prompt dei comandi.

Il vantaggio locateè che troverà i comandi non nel tuo percorso di ricerca. type -a(preferito piuttosto che semplice type) e whichtroverà solo i comandi nel tuo percorso di ricerca. Per vedere il tuo percorso di ricerca usa echo $PATH.

Prendi ad esempio questa risposta in Come iniziare screencloud? :

Provare...

/opt/screencloud/screencloud.sh

Il locate screencloud comando lo troverà ma which screencloude type -a screencloudnon lo farà perché:

  • Il nome completo è screencloud.she solo il locatecomando cerca sulla corrispondenza parziale.
  • /opt/screencloud probabilmente non è nel percorso di ricerca. whiche typecerca solo file eseguibili nel percorso di ricerca.

Nota: questa è una risposta precedente. Viene chiamato Modern ScreenCloud screencloud.

Il vantaggio di Locate rispetto al findcomando è che può essere centinaia o addirittura migliaia di volte più veloce. Anche in esecuzionefind partire da /darà molti errori di autorizzazione che non si verificheranno locate.

Individua gli svantaggi

Se hai appena installato il programma oggi, dovrai utilizzare sudo updatedbper aggiornare il database di Locate.


1

Utilizzare il comando seguente per elencare tutte le $PATHdirectory:

echo $PATH | sed 's/:/\n/g'

Utilizzare il comando seguente per trovare il percorso completo per screencloud:

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

Se hai usato apt, apt-geto Ubuntu Software Center per installare il pacchetto, puoi usare il seguente comando per trovare il percorso completo:

dpkg -L screencloud | grep bin

Supponendo che si è utilizzato questo repository , si dovrebbe essere in grado di trovare screencloud in /usr/bin/.

Il percorso completo è:

/usr/bin/screencloud

o

/usr/bin/screencloud-*

Tuttavia, se si utilizzava l' archivio di snapcraft in base al collegamento fornito nella domanda, il percorso sarebbe nella seguente directory:

/snap/bin

Ulteriori informazioni

Inoltre, ricorda che Ubuntu fa distinzione tra maiuscole e minuscole, quindi devi usare tutte le lettere minuscole senza maiuscole.


Grazie per questa risposta molto dettagliata, hai vinto un voto :)
Ced

1
Era effettivamente sotto /snap/bin!
Ced
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.