Forum Programmation.shell Changer le répertoire courant.

Posté par  .
Étiquettes : aucune
0
19
avr.
2007
Bonjour,

Je chercher à faire un petit script bash qui prend le répertoire en cours via $PWD et le modifie dans une nouvelle variable à l'aide de sed, ainsi je passe de /home/dev à /home/prod et inversement.

Le script fonctionne mais un cd $mon_nvx_dir ne fonctionne pas car le script s'execute dans un processus fils et ne modifie donc pas le répertoire courant de l'utilisateur.
J'ai trouvé un moyen de contourner mon problème en utilisant source (ou "." ) ce qui donne source monscript.sh et la c'est ok :-) .

Par contre si je veux placer un lien vers mon script pour le mettre dans mon ~/bin (pour avoir quelque chose de propre dans le genre changeDir) et bien ça ne marche plus !
Pareil un shell qui contiendrait :


#!/bin/bash

. monscript.sh


Ne marcherait pas non plus.

Si faut la solution est toute bête mais je ne la trouve pas :'(
  • # C'est pas clair...

    Posté par  . Évalué à 2.

    je suis pas sûr d'avoir bien compris mais je tente ma chance. Sur bash (et peut être les autres shell) tu as la variable OLDPWD qui contient le répertoire précédent.

    Donc si tu veux changer entre /home/toto/rep1 et /home/toto/rep2
    Tu va une fois dans /home/toto/rep1 puis tu va dans /home/toto/rep2 et ensuite :
    $ alias swap='cd $OLDPWD'

    maintenant la commande swap te ramène systematique au répertoire précédent (donc tu permutent entre deux à chaque fois)

    Bon, moi non plus je suis pas très clair... Désolé.
    • [^] # Re: C'est pas clair...

      Posté par  . Évalué à 2.

      Oui c'est une bonne idée mais par contre je la différence entre les repertoire dev et prod n'est pas forcement identique, par exemple

      /home/dev/test/log

      peut devenir

      /home/prod/log

      Donc je dois pouvoir garder un filtrage au niveau de sed ;-)

      La solution donnée par gaaaaaAa me va parfaitement !
  • # alias

    Posté par  . Évalué à 2.

    genre tu pose monscript.sh dans ton ~/bin (qui est dans ton PATH j'imagine)

    alias monscript='. `which monscript.sh`'


    ça le fait ?
    • [^] # Re: alias

      Posté par  . Évalué à 3.

      Tout simplement ;-)

      Merci !
      • [^] # Re: alias

        Posté par  . Évalué à 2.

        On ajoutera que sous bash

        cd -

        permet de retourner au répertoire précédent, et donc quand on le fait plusieurs fois, on peut faire du ping-pong entre deux réps, et qu'il existe

        pushd et popd

        quand on veut travailler sur plusieurs niveaux et empiler ses réps.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.