logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 14-04-2023 15:46:02

Qowenta
Membre
Inscription : 23-01-2023

création d'une commande

bonjour,

J'avais installé un IDE de Qt dont l'exécutable qmake est placé dans un répertoire bien précis selon le type d'installation sur une VM Debian
Quand en ligne de commande je faisais:


qmake
 


le terminal renvoyait:
commande bash introuvable

J'avais donc ajouté une ligne dans ~/.bashrc:
export PATH=$PATH:/chemin du répertoire qui contient qmake

si bien que cette commande fonctionne

Admettons maintenant que je crée un fichier nouvelle_commande.c dans le répertoire codeC
Je suppose que le Makefile a été crée pource fichier en c et pour éxécuter,je me place dans le répertoire codeC puis:


./nouvelle_commande
 



1)Comment faire pour que la commande nouvelle_commande soit directement reconnue en tant que user?
-De la même manière que j'ai fait avec qmake?
en ajoutant à ~/.bashrc,la ligne:
export PATH=$PATH:/chemin du répertoire qui contient l'executable de nouvelle_commande(c-à-d chemin de codeC)
-comme ceci?:
https://www.linuxadictos.com/fr/how-to- … linux.html
-autre manière?

2)Comment faire pour que la commande nouvelle_commande soit directement reconnue en tant que root?
-en ajoutant à /etc/bash.bashrc,la ligne:
export PATH=$PATH:/chemin du répertoire qui contient l'executable de nouvelle_commande(c-à-d chemin de codeC)
-comme ceci?:
https://www.linuxadictos.com/fr/how-to- … linux.html
-autre manière?


merci de votre aide

Dernière modification par Qowenta (14-04-2023 22:44:32)

Hors ligne

#2 16-04-2023 20:37:23

Qowenta
Membre
Inscription : 23-01-2023

Re : création d'une commande

Je viens de comprendre une chose:
quand je fais en ligne de commande:


echo $PATH
 


le chemin /usr/bin est affiché....normal qu'un script sh placé dans le répertoire /usr/bin  fonctionne en tapant juste son nom

Mais d'après ce tuto:
https://fr.wikihow.com/modifier-la-vari … sous-Linux

"Modifiez la variable PATH de manière permanente. Vous n'aurez qu'à ajouter la ligne export PATH=$PATH:/sbin/:/usr/sbin/ au fichier ~/.bashrc situé dans votre répertoire utilisateur. Les modifications ainsi apportées seront définitivement prises en charge dès que vous redémarrerez votre ordinateur."


je ne vois aucune telle ligne dans le fichier .bashrc
3)pourquoi cela?

4)seuls les scripts sh fonctionnent?
si je met un executable (d'un fichier c compilé) dans /usr/bin  ou après avoir ajouté dans .bashrc:
export PATH=$PATH:/chemin du répertoire qui contient l'executable de nouvelle_commande_c,
cela marchera-t-il aussi?
je viens d'essayer:réponse affirmative

petite précision à ajouter:
si je met un executable (d'un fichier c compilé) dans  un sous-répertoire /usr/bin  ou après avoir ajouté dans .bashrc:
export PATH=$PATH:/chemin parent du répertoire qui contient l'executable de nouvelle_commande_c,
cela marchera-t-il aussi?
réponse:négative

5)d'où dernière question
quels sont les langages compilables où ça marche comme cela?
ou plutôt:
quels sont les langages compilables où ça ne marche pas comme cela?

Dernière modification par Qowenta (16-04-2023 22:02:31)

Hors ligne

#3 16-04-2023 21:39:49

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : création d'une commande

Tout ce qu'est exécutable dans PATH est lançable dans un terminal en tapant le nom du fichier ?

je ne vois aucune telle ligne dans le fichier .bashrc
3)pourquoi cela?


Parce que c'est déclaré globalement dans /etc/profile

Le manuel est ton ami !

man bash


       PATH   Le chemin de recherche des commandes à exécuter. Il s'agit d'une
              liste  de  répertoires,  séparés  par des deux-points « : » dans
              lesquels l'interpréteur recherche les commandes (consultez  EXÉ‐
              CUTION DES COMMANDES ci-dessous). Un nom de répertoire de taille
              nulle (NULL) dans la valeur de PATH désigne  le  répertoire  ac‐
              tuel.  Un répertoire NULL peut apparaître comme deux deux-points
              consécutifs ou comme des deux-points en début ou en fin. Le che‐
              min par défaut dépend du système et est choisi par l'administra‐
              teur installant bash. Une valeur commune est ``/usr/local/bin:
              /usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.

EXÉCUTION DES COMMANDES
       Après  le découpage de la ligne de commande en mots, si le résultat est
       une commande simple suivie d'une liste facultative d'arguments, les ac‐
       tions suivantes sont effectuées.

       Si  le nom de la commande ne contient aucune barre oblique, l'interpré‐
       teur tente de la localiser. S'il existe une fonction de  l'interpréteur
       de  ce nom, elle est appelée comme nous l'avons vu ci-dessus dans FONC‐
       TIONS. Si le nom n'est pas celui d'une fonction, l'interpréteur le  re‐
       cherche dans la liste des commandes internes. Si une correspondance est
       trouvée, cette commande interne est appelée.

       Si le nom n'est ni celui d'une fonction  de  l'interpréteur,  ni  celui
       d'une  commande  interne et s'il ne contient pas de barre oblique, bash
       va chercher dans chacun des éléments de PATH un répertoire contenant un
       fichier  exécutable  du  nom  désiré. Bash utilise une table de hachage
       pour mémoriser les chemins d'accès complets  aux  fichiers  exécutables
       (consultez  la  commande hash dans COMMANDES INTERNES DE L'INTERPRÉTEUR
       ci-dessous). Une recherche complète dans les répertoires du PATH  n'est
       effectuée que si la commande ne se trouve pas dans la table de hachage.
       Si la recherche est infructueuse, l'interpréteur recherche une fonction
       de  l'interpréteur  appelée command_not_found_handle. Si cette fonction
       existe, elle est appelée dans un environnement d'exécution séparé  avec
       la  commande  d'origine et comme argument les arguments de celle-ci, et
       l'état final de la fonction devient l'état final de  ce  sous-interpré‐
       teur.  Si  cette  fonction n'est pas définie, l'interpréteur affiche un
       message d'erreur et renvoie un état final de 127.

       Si la recherche réussit ou si le nom de la  commande  contient  une  ou
       plusieurs  barres obliques, l'interpréteur exécute le programme demandé
       dans un environnement d'exécution distinct. L'argument 0 est  configuré
       au  nom indiqué et les éventuels arguments restants de la commande sont
       configurés aux arguments indiqués.

       Si cette exécution échoue parce que le programme n'est  pas  un  exécu‐
       table  et  si  le  fichier n'est pas un répertoire, il est pris pour un
       script, un fichier contenant des commandes d'interpréteur. Un  sous-in‐
       terpréteur est alors créé pour exécuter ce script. Ce sous-interpréteur
       se réinitialisera lui-même, comme si un nouvel interpréteur  avait  été
       appelé  pour exécuter le script, à la différence qu'il continuera à mé‐
       moriser l'emplacement des commandes connues de  son  parent  (consultez
       hash dans COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).

       Si  le  programme est un fichier commençant par #!, le reste de la pre‐
       mière ligne indique un interprète pour ce programme. L'interpréteur  se
       chargera  d'exécuter  l'interprète indiqué sur les systèmes d'exploita‐
       tion qui ne gèrent pas eux-mêmes ce format d'exécutable. Les  arguments
       de l'interprète consistent en un seul argument facultatif fourni sur la
       première ligne du fichier à la suite du nom de l'interprète,  suivi  du
       nom du programme, suivi des arguments de la commande s'il y en a.


FICHIERS
       /bin/bash
              L'exécutable bash
       /etc/profile
              Le fichier d'initialisation commun à tout  le  système,  exécuté
              pour les interpréteurs de commandes de connexion
       /etc/bash.bashrc
              Le  fichier  d’initialisation  commun à tout le système pour les
              interpréteurs interactifs
       /etc/bash.bash.logout
              Le fichier de nettoyage des interpréteurs de connexion commun  à
              tout  le  système,  exécuté  lorsqu'un interpréteur de connexion
              termine
       ~/.bash_profile
              Le fichier d'initialisation personnel exécuté pour les interpré‐
              teurs de commandes de connexion
       ~/.bashrc
              Le fichier d’initialisation personnel pour les interpréteurs in‐
              teractifs
       ~/.bash_logout
              Le fichier de nettoyage personnel des interpréteurs de commandes
              de  connexion,  exécuté  lorsqu'un  interpréteur de commandes de
              connexion termine
       ~/.inputrc
              Le fichier d'initialisation personnel de readline

 

Dernière modification par otyugh (16-04-2023 21:44:12)


virtue_signaling.pngpalestine.png
~1821942.svg

En ligne

Pied de page des forums