web-dev-qa-db-fra.com

Ajouter un binaire à mon chemin

J'ai un exécutable. Je veux exécuter l'exécutable dans le terminal avec le nom seulement comme les autres commandes.

Je peux mettre mon exécutable dans /usr/local/bin ou ajouter son PATH à ~/.bashrc. Les deux vont marcher.

Qu'est-ce qui est mieux? Y a-t-il une différence?

14

Par exemple, supposons que vous ayez un exécutable myscriptname__. Vous devez l'exécuter depuis un terminal en tant que,

/path/to/myscript

Changement de niveau d'utilisateur

Si vous ajoutez le PATHde cet exécutable à ~/.bashrc, vous pouvez exécuter l’exécutable avec le nom uniquement à partir de n’importe où ( Avinash Raj déjà mentionné), comme

myscript

Mais le changement sera affecté au niveau utilisateur . Cela signifie que si vous avez d'autres utilisateurs, ils ne pourraient pas accéder à l'exécutable avec un nom uniquement. S'ils ont la permission appropriée, ils doivent exécuter le fichier exécutable en tant que,

/path/to/myscript

De plus, vous ne pourrez pas exécuter le script en tant que Sudo , car il ne figure pas dans PATHof root, pour être exécuté en tant que Sudoname__, vous devez utiliser,

Sudo /path/to/myscript

changement de niveau du système

Si vous mettez votre script dans /usr/local/bin, il est accessible à l’ensemble du système et à tous les utilisateurs. Dans ce cas, tout utilisateur peut exécuter votre exécutable en tant que (sous réserve de disposer des autorisations appropriées).

myscript

Dans ce cas, vous pouvez exécuter le fichier exécutable sous la forme Sudoégalement,

Sudo myscript

Maintenant, choisissez une voie en fonction de vos besoins.

11
souravc

Ajouter l'emplacement du fichier à votre variable $PATH dans votre fichier ~/.bashrc ne vous permettra d'exécuter que depuis n'importe quel emplacement, alors que le placer dans /usr/bin/ permettra à tous les utilisateurs de votre système d'exécuter ce fichier à partir de n'importe quel emplacement.

Pourquoi donc? En effet, votre fichier ~/.bashrc n'est visible que pour vous en tant qu'utilisateur. Tous les changements de variables effectués sont donc limités à vous. Tandis que l'ajout de ce fichier à /usr/bin lui permettra de rester là pour tous les utilisateurs et puisque /usr/bin est présent dans la variable $PATH sauf si quelqu'un le supprime, tous les utilisateurs pourront l'exécuter à partir de n'importe quel emplacement.

2
jobin

Si vous placez le fichier exécutable dans /usr/bin ou /usr/local/bin, vous pourrez alors exécuter ce programme en spécifiant uniquement le nom (your-program au lieu de /usr/local/bin/your-program).

Si vous ajoutez le répertoire contenant le programme dans le fichier ~/.bashrc au PATH, vous pouvez lancer tout fichier exécutable présent dans ce répertoire en saisissant simplement son nom.

1
Avinash Raj

Juste pour compléter la réponse de @souravc ...

Pour le "Changement de niveau d'utilisateur", au lieu de modifier le fichier ~/.bashrc, vous pouvez simplement créer le répertoire $HOME/bin/ et y placer vos scripts.

Le répertoire sera automatiquement ajouté à PATH (du moins depuis Ubuntu 12.04), ce qui signifie que vous pourrez exécuter tous les scripts/exécutables de ce répertoire avec un simple:

myscript

Juste mes 2 cents. :)

PS- J'ai essayé de poster ceci en tant que commentaire à la réponse de @souravc, mais je n'avais pas assez de réputation. :-(

0
Restless