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 :

cd manuel absent


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut cd manuel absent
    Bonjour,

    Je ne comprends pas pourquoi j'ai lerreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    man cd
    Aucune entrée de manuel pour cd
    .
    et comment faire pour y remédier?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    cd est une commande interne du shell.
    si tu utilises bash : help cd,
    sinon man $0
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    C'est surtout une conséquence du fait que Gnu ne fournit pas de binaire indépendant pour la commande cd, comme par exemple /usr/bin/cd, l'une des raisons pour lesquelles les systèmes basés sur Gnu/Linux ne sont pas conformes aux standard POSIX.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    au pire elle est assez facile à écrire

    s'inspirer de celle là trouvé sur google :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #include <errno.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/stat.h>
     
    void affiche_chemin_courant(void)
    {
        char * chemin = NULL;
        char * nouveau = NULL;
        int taille= 16;
     
        while(1)
        {
            if ((nouveau = realloc(chemin,taille))== NULL)
            {
                perror("realloc");
            }
            chemin = nouveau;
            if (getcwd(chemin,taille) != NULL)
            {
                fprintf(stdout, "%s\n" ,  chemin);
                break;
            }
            if (errno != ERANGE)
            {
                perror("getcwd"); break;
            } taille *= 2;
        }
        if (chemin != NULL)
            free(chemin);
    }
     
    void change_chemin_courant(char *nom)
    {
        int fd;
        if ((fd = open(nom, O_RDONLY)) <0) 
        {
            perror(nom);
            return;
        }
        if (fchdir(fd) <0)
            perror(nom);
        close(fd);
    }
     
    int main(int argc , char **argv)
    {
        int i;
        //affiche_chemin_courant();
        for (i = 0;i < argc; i++)
        {
            change_chemin_courant(argv[i]);
            affiche_chemin_courant();
        }
        return EXIT_SUCCESS;
    }
     
    //Execution
    //cd /usr/local/bin
    // ./cd /etc/ /usr/X11R6/include/X11/bitmaps/ /etc/inittab
     
    //=>
    // /usr/local/bin
    //

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    C'est plutôt la page de manuel qu'il faudrait écrire pour répondre à la question posée.

    Quant à l'implémentation, il y a plus simple:


  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 358
    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 358
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    C'est surtout une conséquence du fait que Gnu ne fournit pas de binaire indépendant pour la commande cd, comme par exemple /usr/bin/cd, l'une des raisons pour lesquelles les systèmes basés sur Gnu/Linux ne sont pas conformes aux standard POSIX.
    La commande cd est obligatoirement une commande interne car il ne s'agit que de positionner les différentes variables tel que pwd, cwd, etc...

    Par exemple sous Solaris, la commande cd existe bien dans /usr/bin mais celle-ci n'est autre qu'un script qui appelle la builtin du shell.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    La commande cd est obligatoirement une commande interne car il ne s'agit que de positionner les différentes variables tel que pwd, cwd, etc...
    Je suis très d'accord mais pour une autre raison.

    Dans un shell, à chaque fois que l'on lance une commande, on fork/exec un nouveau process fils qui exécute cette commande.

    Si la commande "cd" était externe, c'est le fils qui changerait de répertoire, pas le parent (le shell). Quand on fait "cd", c'est bien pour que le shell change de répertoire.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Si la commande "cd" était externe, c'est le fils qui changerait de répertoire, pas le parent (le shell). Quand on fait "cd", c'est bien pour que le shell change de répertoire.
    En général mais pas forcément. C'est pour ça que le standard POSIX impose que la commande 'cd' soit aussi fournie en tant que commande externe comme je l'ai déjà écrit dans le post #3.

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    La commande cd est obligatoirement une commande interne car il ne s'agit que de positionner les différentes variables tel que pwd, cwd, etc...
    Il s'agit surtout d'appeler la fonction système chdir.
    Par exemple sous Solaris, la commande cd existe bien dans /usr/bin mais celle-ci n'est autre qu'un script qui appelle la builtin du shell.
    Ce n'est pas la seule commande dans ce cas, et rien n'interdit d'implémenter une commande comme ça.
    C'est d'ailleurs précisément à quoi je faisait allusion dans mon dernier post.

Discussions similaires

  1. Réponses: 12
    Dernier message: 21/06/2004, 10h44
  2. ecrire manuellement dans une dbgrid
    Par neness dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/06/2004, 11h14
  3. Man signal, man scanf => pas de manuel
    Par weed dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 17/05/2004, 16h31
  4. [SQL] Ma requête m'oblige à saisir des valeurs manuellement
    Par bossun dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/10/2003, 13h29
  5. Assemblage manuel
    Par syraks dans le forum Assembleur
    Réponses: 4
    Dernier message: 01/06/2003, 00h08

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