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 :

Commande cd dans un script


Sujet :

Shell et commandes GNU

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut Commande cd dans un script
    Bonjour

    Désolé pour la question de débutant !
    Je suis dans une console et je fais cd /var/lib/mysql-files et je me retrouve dans le répertoire voulu.
    Si je mets la même commande dans un fichier et que j'exécute le fichier avec bash, il ne se passe rien.
    Question : certaines commandes sont elles inopérantes dans un script ?

    Merci d'avance

  2. #2
    Membre chevronné Avatar de gabriel21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 507
    Points : 1 832
    Points
    1 832
    Par défaut
    Il n'y a pas de commandes qui sont neutralisé en script.

    Par contre, de manière générale, un script s'exécute dans un processus fils.
    Par conséquent, l'environnement bash à partir duquel tu as lancé le script n'est pas modifié.

    En gros ton script va bien dans le répertoire. Si tu veux t'en assurer, tu peux faire un pwd juste après ton cd. Mais, à la fin de ton script, tu reviens à l'endroit où tu étais.
    "Les cons, ça ose tout. C'est même à ça qu'on les reconnaît." Michel Audiard - Les tontons flingueurs
    Site Web : https://www.admin-libre.fr

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    ah .... donc ce genre de raccourci que je voulais faire depuis un répertoire de base n'est pas possible.
    C'était surtout pour m'éviter de me souvenir de certains chemins où je vais parfois.
    Comme je ne suis pas un grand pratiquant de linux, je pensais faire ça pour m'aider.
    Tant pis

    Merci

  4. #4
    Membre chevronné Avatar de gabriel21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 507
    Points : 1 832
    Points
    1 832
    Par défaut
    Tu peux utiliser des variables que tu charges au démarrage de bash, c'est à dire dans .bashrc.
    Pour plus d'information, je te renvoie vers la documentation Ubuntu : https://doc.ubuntu-fr.org/variables_d_environnement
    "Les cons, ça ose tout. C'est même à ça qu'on les reconnaît." Michel Audiard - Les tontons flingueurs
    Site Web : https://www.admin-libre.fr

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Tu peux aussi...
    • créer des alias :
      alias cdprg="cd /mon/chemin/long/vers/mes/programmes"
    • créer des liens dans ton répertoire HOME :
      ln -s /mon/chemin/long/vers/mes/programmes ~/prg
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    ah .... donc ce genre de raccourci que je voulais faire depuis un répertoire de base n'est pas possible.
    Si. Il ne faut pas exécuter ton fichier mais sourcer ton fichier.
    ou
    Mais la réponse pratique à ta demande est souvent l'alias, comme l'a dit al1_24.

    [edit]Note : la commande cd toute seule revient dans ton $HOME. [/edit]
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    @gabriel21: merci pour le lien vers la doc

    @Flodelarab : source, je ne connaissais pas du tout

    @al1_24: un alias , est-ce un peu comme dans Windows quand on connecte un chemin réseau vers une lettre de disque ?
    Ce qui reviendrait ensuite à faire un cd monalias ?
    c'est bien ça ?

    ou directement monalias, puisque je vois que le cd est dans la chaîne de l'alias ?

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    un alias , est-ce un peu comme dans Windows quand on connecte un chemin réseau vers une lettre de disque ?
    Ce qui reviendrait ensuite à faire un cd monalias ?
    c'est bien ça ?
    Non. Ca, c'est ce que fait le lien, initié par la commande ln.
    Dans mon exemple, tu crées dans le répertoire $HOME un lien vers le répertoire /mon/chemin/etc nommé prg.
    Si tu exécutes la commande ls $HOME, prg apparait et se comporte comme un répertoire.
    Citation Envoyé par Papy214 Voir le message
    ou directement monalias, puisque je vois que le cd est dans la chaîne de l'alias ?
    L'alias, c'est en effet la création d'une nouvelle commande.
    La commande cdprg de mon exemple te placera dans le répertoire /mon/chemin/etc.

    La page de manuel de la commande interne alias : ici
    La page de manuel de la commande ln : ici
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Moins courant, mais peut être utile, c'est la variable CDPATH mais à utiliser avec parcimonie, et pour éviter le bordel, pour des arborescences non générique.

    Cette variable permet à cd de savoir où regarder pour un répertoire relatif donné, un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ CDPATH=/usr:/var
    $ cd bin
    /usr/bin
    $ pwd
    /usr/bin
    $ cd log
    /var/log
    $ pwd
    /var/log
    Cordialement.

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Super, merci pour toutes ces explications !
    Je vais lire les docs pointées par les liens utiliser la fonctionnalité d'alias.

    J'ai un petit commentaire supplémentaire à faire un peu hors sujet.
    Il y a de nombreuses années, j'ai voulu m'intéresser à linux.
    Étant encore plus débutant qu'aujourd'hui, j'avais vraiment du mal à comprendre même la plus petite chose.
    Je me souviens m'être fait jeter comme un malpropre tout ça parce que j'étais un débutant complet et que les gens de l'époque sur les forums devaient se prendre pour des génies.
    Ca fait plaisir de voir que les choses ont changé et que les intervenants sur ce sujet sont devenus sympathiques et prêts à aider.
    Sincèrement, merci !


  11. #11
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Moins courant, mais peut être utile, c'est la variable CDPATH mais à utiliser avec parcimonie, et pour éviter le bordel, pour des arborescences non générique.

    Cette variable permet à cd de savoir où regarder pour un répertoire relatif donné, un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ CDPATH=/usr:/var
    $ cd bin
    /usr/bin
    $ pwd
    /usr/bin
    $ cd log
    /var/log
    $ pwd
    /var/log
    Pour info, j'ai testé source, alias et ln, c'est extra.

    Juste une dernière question sur ce CDPATH: Est-ce un équivalent de la variable PATH de Windows dans laquelle met différents chemins de recherche pour l'OS ?

  12. #12
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Cette commande affiche ton PATH, dans lequel le système va chercher les exécutables.

    Personnellement, cette variable est vide.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    encore un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ shopt -s cdable_vars
    $ localBin=/usr/local/bin
    $ cd "$localBin"
    $ pwd
    /usr/local/bin
    tout cela est bien, mais, àmha, cela nuit à la connaissance du système.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Merci pour ce code supplémentaire.
    Je vais tout de même me limiter au plus simple pour le moment parce que sinon, je vais me perdre au milieu de tout ça :-(

  15. #15
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 476
    Points : 11 051
    Points
    11 051
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Super, merci pour toutes ces explications !
    Je vais lire les docs pointées par les liens utiliser la fonctionnalité d'alias.

    J'ai un petit commentaire supplémentaire à faire un peu hors sujet.
    Il y a de nombreuses années, j'ai voulu m'intéresser à linux.
    Étant encore plus débutant qu'aujourd'hui, j'avais vraiment du mal à comprendre même la plus petite chose.
    Je me souviens m'être fait jeter comme un malpropre tout ça parce que j'étais un débutant complet et que les gens de l'époque sur les forums devaient se prendre pour des génies.
    Ca fait plaisir de voir que les choses ont changé et que les intervenants sur ce sujet sont devenus sympathiques et prêts à aider.
    Sincèrement, merci !

    @Papy214
    Ça fait plaisir à lire En plus des documentaions précitées, cette vidéo et cette chaîne peut t'être utile:

    [Débuter] [VIDEO] Découvrir Linux
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Personnellement, cette variable est vide.
    Oui, en général, elle est vide, mais sinon elle fonctionne comme $PATH mais juste pour la commande cd.

    Et pour en rajouter une couche, il y a aussi en bash les commandes builtin: pushd, popd et dirs qui permettent de gérer des déplacements dans des répertoires via une pile (comme en assembleur)
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Execution d'une commande telnet dans un script sh
    Par Nospher dans le forum Linux
    Réponses: 17
    Dernier message: 23/08/2011, 15h30
  2. [AIX] commande SCP dans un script
    Par cristophe001 dans le forum AIX
    Réponses: 1
    Dernier message: 07/05/2007, 07h09
  3. [cURL] Lancer une commande curl dans un script php
    Par griese dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 22/03/2007, 10h52
  4. Réponses: 5
    Dernier message: 16/03/2007, 12h16
  5. Réponses: 1
    Dernier message: 14/03/2007, 15h56

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