web-dev-qa-db-fra.com

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

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

enter image description here

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 depuis Ubuntu Software Center.

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.

13
Ced

Trouvez le chemin d'un exécutable

Meilleur moyen

  • type executable

Consultez cette question pour en savoir plus sur la façon dont type est meilleur. (Merci, commentaires!)

Autres moyens

  • whereis executable
  • which executable

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

16
Biggybi

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

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

Utilisez la commande suivante pour rechercher le chemin complet de screencloud:

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

Si vous avez utilisé apt, apt-get, ou Ubuntu Software Center 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 référentiel , vous devriez pouvoir trouver screencloud dans /usr/bin/.

Le chemin complet est:

/usr/bin/screencloud

ou

/usr/bin/screencloud-*

Cependant, si vous avez utilisé le magasin de snapcraft selon le lien que vous avez fourni dans votre question, alors le chemin serait sous 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.

1
mchid

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

Supposons que vous vouliez trouver l'emplacement de uname, un 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 avez 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 locate renvoie tous les fichiers contenant uname et pas seulement le programme exécuté à partir de l'invite de commande.

L'avantage de locate est qu'il trouvera des commandes pas dans votre chemin de recherche. type -a (préféré au simple type) et which ne trouvera que les 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

Le locate screencloud la commande le trouvera mais which screencloud et type -a screencloud ne le fera pas car:

  • Le nom complet est screencloud.sh et uniquement la commande locate recherche une correspondance partielle.
  • /opt/screencloud n'est probablement pas dans le chemin de recherche. which et type ne recherchent que les fichiers exécutables dans le chemin de recherche.

Remarque: Ceci est une réponse plus ancienne. ScreenCloud moderne est appelé avec screencloud.

L'avantage de Locate par rapport à la commande find est qu'elle peut être des centaines voire des milliers de fois plus rapide. Exécute également find à partir de / donnera de nombreuses erreurs d'autorisation que vous ne rencontrerez pas avec locate.

Localiser les inconvénients

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

1
WinEunuuchs2Unix