Comment puis-je créer un programme exécutable de partout


76

Que dois-je faire si je veux pouvoir exécuter un programme quel que soit mon répertoire actuel? Dois-je créer un lien symbolique vers le programme dans le /bindossier?


5
Non, vous devez utiliser la variable PATH du shell.
msw

7
Je pense que ce serait bien de créer un ~/bin/dossier personnel , d’ajouter CE à votre chemin et de créer des liens symboliques dans ce dossier vers tout ce que vous voulez pouvoir exécuter de n'importe où.
Frabjous

1
Vous pouvez également définir un alias avec le chemin complet du binaire que vous voulez exécuter.
datasmurf

Réponses:


53

Si vous tapez simplement export PATH=$PATH:</path/to/file>sur la ligne de commande, cela ne durera que la durée de la session.

Si vous voulez le changer définitivement, ajoutez-le export PATH=$PATH:</path/to/file>à votre fichier ~ / .bashrc (juste à la fin, ça ira).


11
Merci ça marche. Pour les débutants comme moi, n'oubliez pas de ne pas utiliser les crochets <>. Comme si: $ PATH: / votre / fichier / chemin
SAm

4
De même, n'incluez pas le nom du fichier programme dans le chemin.
Olli Niemitalo

23

La réponse courte est que pour exécuter le programme, quel que soit votre répertoire, vous devez avoir le répertoire du programme dans votre chemin de recherche. Le problème peut être résolu en plaçant le programme dans un dossier déjà présent dans ce chemin, ou en ajoutant un nouveau dossier au chemin - cela fonctionnera. La meilleure réponse dépend de:

Ce programme est-il un programme téléchargé que vous avez vous-même compilé à partir des sources?

Il est fort probable qu’il aura déjà un mécanisme d’installation. Dans le dossier dans lequel vous avez compilé le programme, en tant que root, exécutez 'make install'

Ce programme est-il un programme téléchargé que vous souhaitez rendre disponible dans le cadre des programmes standard de l’ordinateur?

Cela a du sens de mettre ce type d’application dans un dossier standard. il est assez courant d’utiliser des répertoires tels que / usr / local / bin pour de tels programmes. Vous aurez besoin d'un accès root pour faire cela.

C’est un programme que vous avez écrit pour vous-même et / ou vous n’avez aucun privilège particulier sur votre ordinateur.

Créer un dossier dans votre répertoire personnel appelé 'bin' et y placer le programme. Vous devrez peut-être modifier votre script de connexion pour ajouter le chemin d'accès complet à ce dossier (par exemple, / usr / home / jeremy / bin).

Bien que vous puissiez simplement ajouter son répertoire actuel au chemin de recherche, vous devrez continuer à le faire avec chaque nouveau programme - et cela demande plus de travail à long terme.


15

Placer un lien vers le fichier dans le /binrépertoire n'est pas la meilleure chose à faire pour plusieurs raisons.

  • Si le fichier exécutable se trouve à un emplacement que certains utilisateurs ne peuvent ni voir ni exécuter, ils le voient comme un mauvais lien ou un programme dysfonctionnel.
  • Le /binrépertoire est censé être réservé aux programmes nécessaires à l’exécution du système (comme chmod, par exemple mkdir).

Vous pouvez réellement placer (installer) le fichier exécutable dans /usr/bin/ou même /usr/local/bin/. Bien sûr, vous avez manuellement installé le programme à ce stade; votre distribution ne va pas suivre sa progression comme le reste de vos programmes - vous devrez la mettre à niveau manuellement si nécessaire et la supprimer manuellement si vous le souhaitez. De plus, vous devrez savoir de quels paquets cela dépend (on dirait que vous utilisez déjà le programme, donc on s'en occupe, mais en général ...).

Sauf si je configure un programme que d'autres utilisateurs devraient utiliser, ce n'est pas ce que je fais habituellement: je crée un répertoire bin uniquement pour moi dans mon répertoire personnel et je modifie mon profil de shell pour l'ajouter ~/bin/à ma PATHvariable d'environnement. Je trouve plus facile de suivre les programmes que j'ai installés de cette façon, car ils sont séparés du reste du système.


6

Si vous souhaitez exécuter une commande foodans le répertoire dans lequel se trouve votre shell, vous avez essentiellement deux options:

  1. Tapez ./fooà l'invite du shell.

  2. Ajoutez le .répertoire ( .est un nom pour "le répertoire actuel") à la PATHvariable d'environnement; Comment faire cela dépend du shell que vous utilisez:

    • pour les shells de type Bourne (bash, zsh, ksh, etc.) que vous écrivez (voir cette page pour plus d'informations):

      export PATH=$PATH:.
      
    • pour les shells de type csh (tcsh, csh) que vous écrivez (voir cette page pour plus d’informations):

      set path = ( $path .)
      

Notez que 2. constitue un risque de sécurité sur les systèmes multi-utilisateurs: imaginez-vous un cdrépertoire /tmpet un utilisateur malveillant a créé un binaire de malware nommé lsici.


2
Oui, je pense que les options vous montrent qu'Unix vous permet de faire des choses, c'est considéré comme une mauvaise pratique. Ajouter . sur votre chemin peut également créer d’autres effets secondaires généralement mauvais.
Le Unix Janitor

1

Messing avec le PATHvous ouvre à exécuter des programmes malveillants par erreur. Standard consiste à installer des éléments "locaux" sous /usr/local(voir FHS , qui codifie l'utilisation d'Unix: un peu daté mais cela donne une raison), /usr/local/binest généralement utilisé PATHpour tous les utilisateurs.

Mes programmes "installés localement" sont dans $HOME/bin, définis dans la danse standard ./configure --prefix=$HOME ..., avec quelques alias (bash) pour choisir, par exemple, un git construit par soi-même sur le système (ceux qui ne sont pas conflictuels se trouvent tout PATHà la fin).

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.