Comment connaître le chemin d'un logiciel particulier?

13

Contexte: J'essaie de faire démarrer automatiquement une application lorsque je me connecte. Pour cela, je dois sélectionner le pathpour l'application.

entrez la description de l'image ici

Voici les chemins que j'ai déjà explorés:

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

Si cela peut vous aider, l'application que j'essaie de trouver s'appelle " ScreenCloud " et je l'ai téléchargée à partir du Centre logiciel Ubuntu.

Mais je ne le trouve pas, est-il possible de savoir où est installé un logiciel particulier? Parce que même si j'ai trouvé pour celui-ci, je voudrais éviter d'avoir le même problème à l'avenir.

Ced
la source
2
Cela ne fonctionne-t-il pas si vous tapez simplement screencloud dans la ligne de commande?
Graham
L'avez-vous obtenu à partir du magasin de snap ou du centre logiciel Ubuntu parce que je ne le trouve dans aucun des référentiels apt d'Ubuntu.
mchid
2
@mchid Je ne parlais pas du lien OP mais plutôt de votre commentaire: "car je ne le trouve dans aucun des référentiels apt d'Ubuntu" Screencloud peut être installé à partir du .debpaquet mais vous devez ajouter PPA.
WinEunuuchs2Unix
1
@mchid Je savais que la commande était passée de screencloud.shà screencloudet je soupçonnais qu'elle avait été retirée /opt. Cette partie de ma réponse indiquait comment typeet whichne trouverait pas screencloudmais le locateferait.
WinEunuuchs2Unix
1
@ WinEunuuchs2Unix Tout de suite. screencloud.shexiste toujours mais je ne sais pas en quoi il diffère du screencloudfait que le .shfichier est un script et screencloudne l'est pas. Je ne connais vraiment pas cette application. Sous /usr/bin/il y a un screencloud, un screencloud.shet aussi un screencloud-suivi du numéro de version un peu comme comment gimpest.
mchid

Réponses:

16

Trouver le chemin d'un exécutable

Meilleur moyen

  • type executable

Consultez cette question pour en savoir plus sur la typemeilleure solution. (Merci, commentaires!)

D'autres moyens

  • whereis executable
  • which executable

Ces commandes ne recherchent que dans la variable PATH ( echo $PATH), elles ne sont donc pas valides dans certains cas (fonctions intégrées, alias ou fonctions bash, etc.).

Biggybi
la source
3
incroyablement, ce n'était pas encore une question à poser à ubuntu. bonne question @Ced!
tatsu
En effet, je peux à peine y croire!
Biggybi
1
J'ai découvert une autre question qui typeest préférée whichcar c'est un shell intégré et peut déterminer si une commande est un alias. C'était nouveau pour moi aussi!
Arronical
1
Voir ici pour une (longue) explication de pourquoi typeest préféré: Pourquoi ne pas utiliser "qui"? Que faut-il utiliser alors?
terdon
1
@mchid les points de la réponse s'appliquent tous. Y compris la section "Use Cases" qui souligne que whichc'est effectivement utile dans le contexte spécifique des scripts shell. En dehors de ce contexte, cependant, typec'est presque toujours le meilleur choix.
terdon
1

Rechercher l'emplacement de la commande à l'intérieur ou à l'extérieur du chemin

Supposons que vous vouliez trouver l'emplacement d' unameun programme qui répertorie les informations système. Si vous voulez savoir dans quel répertoire la commande de niveau supérieur est stockée, vous disposez d'un certain nombre d'options:

$ 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

Localisez les avantages

La dernière option locaterenvoie tous les fichiers contenant unamenon seulement le programme exécuté à partir de l'invite de commandes.

L'avantage locateest qu'il trouvera des commandes qui ne se trouvent pas dans votre chemin de recherche. type -a(préféré à simple type) et whichne trouvera que des commandes dans votre chemin de recherche. Pour voir votre chemin de recherche, utilisez echo $PATH.

Prenez par exemple cette réponse dans Comment démarrer screencloud? :

Essayer...

/opt/screencloud/screencloud.sh

La locate screencloudcommande trouvra mais which screencloudet type -a screencloudne sera pas parce que:

  • Le nom complet est screencloud.shet seule la locatecommande recherche sur une correspondance partielle.
  • /opt/screencloudn'est probablement pas dans le chemin de recherche. whichet typene recherchez que les fichiers exécutables dans le chemin de recherche.

Remarque: il s'agit d'une réponse plus ancienne. ScreenCloud moderne est appelé avec screencloud.

L'avantage de Locate par rapport à la findcommande est qu'elle peut être des centaines, voire des milliers de fois plus rapide. L'exécution à findpartir de /donnera également de nombreuses erreurs d'autorisation que vous ne rencontrerez pas locate.

Localiser les inconvénients

Si vous venez d'installer le programme aujourd'hui, vous devrez utiliser sudo updatedbpour mettre à jour la base de données de Locate.

WinEunuuchs2Unix
la source
1

Utilisez la commande suivante pour répertorier tous vos $PATHrépertoires:

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

Utilisez la commande suivante pour rechercher le chemin d'accès complet pour screencloud:

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

Si vous avez utilisé apt, apt-getou le Centre Ubuntu Software pour installer le package, vous pouvez utiliser la commande suivante pour trouver le chemin complet:

dpkg -L screencloud | grep bin

En supposant que vous avez utilisé ce dépôt , vous devriez être en mesure de trouver screencloud dans /usr/bin/.

Le chemin complet est:

/usr/bin/screencloud

ou

/usr/bin/screencloud-*

Cependant, si vous avez utilisé le magasin snapcraft en fonction du lien que vous avez fourni dans votre question, le chemin se trouverait dans le répertoire suivant:

/snap/bin

Plus d'informations

N'oubliez pas non plus qu'Ubuntu est sensible à la casse, vous devez donc utiliser tous les minuscules sans majuscules.

mchid
la source
Merci pour cette réponse très détaillée, vous avez gagné un vote positif :)
Ced
1
C'était effectivement sous /snap/bin!
Ced