GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un programme dans bin

Il existe deux façons de vous permettre d'exécuter le binaire sans spécifier son chemin (sans inclure la création d'alias ou de fonctions shell pour l'exécuter avec un chemin absolu pour vous) :

  1. Copiez-le dans un répertoire qui se trouve dans votre $PATH .
  2. Ajoutez le répertoire où il se trouve à votre $PATH .

Pour copier le fichier dans un répertoire de votre chemin, par exemple /usr/local/bin (où les logiciels gérés localement doivent aller), vous devez avoir des privilèges de superutilisateur, ce qui signifie généralement utiliser sudo :

$ sudo cp -i mybinary /usr/local/bin

Il faut veiller à ne pas écraser les fichiers existants dans le répertoire cible (c'est pourquoi j'ai ajouté -i ici).

Pour ajouter un répertoire à votre $PATH , ajoutez une ligne dans votre ~/.bashrc fichier (si vous utilisez bash ):

PATH="$HOME/bin:$PATH"

... si le binaire est en $HOME/bin .

Cela a l'avantage que vous n'avez pas besoin d'avoir des privilèges de superutilisateur ou de modifier/ajouter quoi que ce soit dans le système de base sur votre machine. Il vous suffit de déplacer le binaire dans le bin répertoire de votre répertoire personnel.

Remarque, modifications apportées à .bashrc prend effet lorsque le fichier est sourcé la prochaine fois, ce qui se produit si vous ouvrez un nouveau terminal ou si vous vous déconnectez et vous reconnectez, ou exécutez source ~/.bashrc manuellement.


Vous devriez en savoir plus sur la variable PATH. Je soupçonne fortement que vous devriez l'utiliser (ou le modifier) ​​de manière appropriée.

Je veux pouvoir le mettre dans le répertoire bin

Je suppose que vous voulez dire /bin/ ou /usr/bin/ . Je ne suis pas sûr qu'il soit sage d'y ajouter vos propres programmes. Il serait peut-être préférable de mettre un lien symbolique à l'intérieur (par exemple, en utilisant quelque chose comme ln -sv $(realpath foobar.out) /usr/bin/ ), si vous voulez absolument que votre programme y apparaisse (ce qui, à mon humble avis, est probablement une erreur puisque vous vous trompez avec le gestionnaire de paquets de votre distribution).

Probablement en train d'installer votre programme en /usr/local/bin/ est beaucoup plus sage (laisser à la fois /bin/ et /usr/bin/ intact, tel qu'il est fourni et géré par votre distribution Linux). Voir LSB et en savoir plus sur la norme de hiérarchie des fichiers.

... comme les commandes à l'échelle du système, par exemple .... cd

Il s'agit d'une forte idée fausse de votre part (dans la variante originale de votre question, vous avez à juste titre supprimé cd plus tard). cd n'est pas et ne peut pas être un exécutable, c'est (et doit être) une commande intégrée de votre shell.

Vous voudrez peut-être lire la Programmation Linux avancée téléchargeable gratuitement. pour comprendre pourquoi cd ne peut pas être un exécutable (le répertoire de travail courant fait partie de l'état de chaque processus, et chaque processus a le sien et peut le changer en utilisant chdir(2)...)


install /path/to/oobar.out /usr/local/bin/

Linux
  1. Python – Comment /usr/bin/env sait-il quel programme utiliser ?

  2. Compter le nombre de fichiers dans un répertoire en utilisant C

  3. Exclure le répertoire lors de la création d'un fichier .tar.gz

  4. Créer un nouveau répertoire en C

  5. Pourquoi Bash ne donne-t-il aucun fichier ou répertoire de ce type pour un programme qui se trouve dans mon PATH ?

Comment ajouter un répertoire à PATH sous Linux

Créer, supprimer et gérer des répertoires sous Linux

CD vers un répertoire de nom inconnu dans un chemin connu ?

Linux :ajouter un répertoire à PATH

Utilisation de / lors de l'utilisation d'un cd

Comment ajouter le sous-répertoire bin du premier répertoire de GOPATH à PATH ?