Ajouter un binaire à mon chemin


15

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

Je peux mettre mon exécutable /usr/local/binou je pourrais l'ajouter PATHà ~/.bashrc. Les deux fonctionneront.

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

Réponses:


12

Par exemple, laissez-moi supposer que vous avez un exécutable myscript. Vous devez l'exécuter à partir d'un terminal,

/path/to/myscript

Changement de niveau utilisateur

Si vous ajoutez le PATHfichier de cet exécutable à ~/.bashrc, vous pouvez exécuter l'exécutable avec le nom uniquement 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 un ou plusieurs autres utilisateurs, ils ne peuvent pas accéder à l'exécutable avec un nom uniquement. S'ils disposent de l'autorisation appropriée, ils doivent exécuter l'exécutable en tant que,

/path/to/myscript

De plus, vous ne serez pas en mesure d'exécuter le script en tant que sudo car il ne l'est pas en tant que PATHroot, pour exécuter comme sudovous le souhaitez,

sudo /path/to/myscript

changement de niveau du système

Si vous mettez votre script /usr/local/bindedans, il est accessible à l'ensemble du système et pour tous les utilisateurs. Dans ce cas, n'importe quel utilisateur peut exécuter votre exécutable en tant que (sous réserve des autorisations appropriées)

myscript

Dans ce cas, vous pouvez exécuter l'exécutable sudoaussi,

sudo myscript

Choisissez maintenant une voie en fonction de vos besoins.


2

L'ajout de l'emplacement du fichier à votre $PATHvariable dans votre ~/.bashrcfichier ne vous permettra d'exécuter qu'à partir de n'importe quel emplacement, tandis que le placer /usr/bin/permettra à tous les utilisateurs de votre système d'exécuter ce fichier à partir de n'importe quel emplacement.

Pourquoi donc? Parce que votre ~/.bashrcfichier n'est visible que pour vous en tant qu'utilisateur. Ainsi, tous les changements de variables effectués sont limités à vous. Alors que l'ajout de ce fichier à /usr/binpermettra au fichier de rester là pour tous les utilisateurs et puisqu'il /usr/binest présent dans la $PATHvariable à moins que quelqu'un ne le supprime, permettra à tous les utilisateurs de l'exécuter à partir de n'importe quel emplacement.


1

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

Si vous ajoutez à la place le répertoire contenant le programme dans le ~/.bashrcfichier PATH, alors tout fichier exécutable présent dans ce répertoire peut être lancé en tapant uniquement son nom.


1
Cette information est fausse, vous pouvez toujours lancer l'exécutable même si vous n'êtes pas dans "ce répertoire".
Lekensteyn

Comment est-ce faux?, Veuillez expliquer un peu plus.
Avinash Raj

1
D'accord, j'ai eu du mal à lire votre réponse (et j'ai donc fait une erreur), je l'ai donc modifiée pour éliminer la confusion et déporté le downvote. J'espère que cela aide.
Lekensteyn

Alors, la question est: quoi de mieux? Y a-t-il une différence? Vous n'avez pratiquement rien dit de plus que le PO.
Radu Rădeanu

J'ai répondu à la question du système d'exploitation, mais pas dans un format bref.
Avinash Raj

0

Tout comme un complément à la réponse @souravc ...

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

Le répertoire sera automatiquement ajouté à PATH(au moins depuis Ubuntu 12.04) ce qui signifie que vous pourrez exécuter tous les scripts / exécutables à l'intérieur 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 @souravc, mais je n'avais pas assez de réputation. :-(

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.