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

Linux Discussion :

Script shell qui change le repertoire courant


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    dev
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 61
    Points
    61
    Par défaut Script shell qui change le repertoire courant
    Bonjour,
    une question certainement très bête!
    Je voudrais écrire un script shell bash qui change le répertoire courant du shell appelant.
    Quand je mets un cd dans mon script, celui-ci se déplace bien où je veux, mais lorsqu'il rend la main au shell, je me retrouve à l'emplacement initial.
    Je comprends bien que c'est le fonctionnement normal, mais y n'y aurait-il pas un moyen que le shell appelant se déplace aussi ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [estats@dev script]$ pwd 
    /home/estats/scripts
    Ce que je voudrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [estats@dev script]$ ./changedir.sh programmes
    [estats@dev script]$ pwd
    /home/estats/programmes
    Ce que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [estats@dev script]$ ./cd.sh
    [estats@dev script]$ pwd
    /home/estats/scripts
    Le script fait un traîtement particulier, et en fonction des circonstances devrait me rendre la main dans un répertoire ou dans un autre.
    Si vous avez ca dans vos tiroirs !
    merci
    Estats

  2. #2
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Très simple, tu lances le programme ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . ./changedir.sh programmes
    Grave urgent !!!

  3. #3
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Bonjour

    Le problème, c'est que ton shell se fork, et le fils exécute la commande, pendant que le père l'attends. Une fois terminé, c'est le père qui reprends la main. L'astuce c'est de remplacer l'image mémoire du shell par ton script, via un exec, mais alors des que ton script se termine, le terminal se ferme. Il faut donc a la fin du script remplacer l'image mémoire du script par cette d'un shell qui du coup démarrera dans le bon dossier.

    En bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/sh
    echo "Hello"
    cd ~romain 
    exec $SHELL
    et pour le lancer :
    Bon, la commande source que te recommande Katyucha marche aussi bien en moins compliqué

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    oui tu lits mon cours, c'est la notion de process pere et fils ...
    sinon dans ton .bash_profile tu rajoute une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CD ()
    {
    cd $1
    }
    et hop sa marche
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  5. #5
    Membre du Club
    Profil pro
    dev
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    je fais un exec d'un nouveau shell

    A bientôt
    Merci à tous

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

Discussions similaires

  1. script shell qui affiche les repertoires et sous repertoires
    Par Alex le grand dans le forum Linux
    Réponses: 4
    Dernier message: 16/12/2009, 19h06
  2. un script shell qui appel un autre
    Par nina08 dans le forum Linux
    Réponses: 22
    Dernier message: 19/11/2009, 01h20
  3. Réponses: 0
    Dernier message: 03/06/2008, 11h44
  4. Script shell qui appelle méthode Java ?
    Par babyboy dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2007, 01h45
  5. Script Shell qui lance un programme sur un ordi distant avec SSH
    Par bilibou dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 02/06/2007, 11h18

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