IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

history not found avec un programme compilé en C


Sujet :

Shell et commandes GNU

  1. #1
    wom
    wom est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut history not found avec un programme compilé en C
    Bonjour tout le monde,

    J'ai récemment compilé en C sous Ubuntu.

    Le programme trivial est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main()
    {
    system("history");
    }
    Et à l’exécution le bash me sort :
    Alors que la commande fonctionne parfaitement si je tape la tape en mode console.

    Ça fait pareil si je mets "fc -l" a la place de "history" dans le programme.

    Si je met la commande dans un script, par exemple cat > /usr/bin/monhistory.sh .... history et que j'invoque le script à partir du programme compile, rebelote .... history not found.

    Quelqu'un a-t-il une idée pour arranger ça ou pour le contourner en écrivant à la limite un programme faisant la même chose que history ?

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,

    Par défaut, l'history n'est actif que sur un bash interactif, pas dans des bash de type batch, il faut donc forcer l'activation (set -o history et potentiellement initialiser quelques variables que l'history peut utiliser).

    Voici en exemple une solution que j'avais donné il y a quelque temps qui exploite l'history:
    http://www.developpez.net/forums/d13...l/#post7176038
    Cordialement.

  3. #3
    wom
    wom est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    reponse de wom a disedorgue

    Merci pour ta reponse
    J’ai testé ton script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    set -o history
    executeCmd(){
    CMD=`history | tail -1 | sed -e 's/^[ 0-9]*[[:graph:]]* *//g'`
    echo "executing the '$CMD' command" >/dev/tty
    eval $CMD
    }
    executeCmd ls
    et effectivement si je l’appelle avec mon programme compile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main()
    {
    System(« toncript »)
    }
    Ça marche bien pour la commande ls

    Mais si a la place de ls tu met « history » : le programme ne fait pas son boulot à savoir qu’il ne renvoie pas le résultat d’une commande history

    Il renvoie ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    executing the 'history' command
        1  executeCmd(){ CMD=`history | tail -1 | sed -e 's/^[ 0-9]*[[:graph:]]* *//g'`; echo "executing the '$CMD' command" >/dev/tty; eval $CMD; }
        2  executeCmd history

    …. Et rien après

    Qu’est ce que je comprend pas ?

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Euh, à mon avis, tu devrais faire plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set -o history
    ls -l
    echo toto
    history
    Ceci, je pense, devrait t'afficher:
    ls -l
    echo toto

    Pour ton cas, ce qui est important, c'est d'activer l'history (set -o history)
    Cordialement.

Discussions similaires

  1. csc.exe not found avec CSharpCodeProvider
    Par pcayrol dans le forum C#
    Réponses: 1
    Dernier message: 08/04/2009, 19h50
  2. class not found avec wlappc
    Par j0hnmerrick dans le forum Weblogic
    Réponses: 2
    Dernier message: 09/06/2008, 13h09
  3. [etch] Pb "404 not found" avec Debmirror
    Par byloute dans le forum Debian
    Réponses: 0
    Dernier message: 31/10/2007, 11h56
  4. [ORACLE 8.1.7] Message 2100 not found avec SQL LOADER
    Par ApprentiOracle dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 09/08/2006, 21h03
  5. Command not found avec csh
    Par mavina dans le forum Linux
    Réponses: 2
    Dernier message: 25/04/2006, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo