Forum Programmation.shell j'ai du raté un wagon

Posté par  .
Étiquettes : aucune
0
24
fév.
2007
Bonjour !
Après une longue pause, j'ai envie de me remettre à Linux, alors pour commencer, j'utilise Cygwin, et j'ai resorti un petit bashrc maison qui marchait très bien (mais ce souvenir doit être erroné, ça doit être une autre version que j'ai perdu...) toujours est t'il qu'il ne fonctionne pas, je supprime les parties les une après les autres dans des ordres différents, ça plante toujours, impossible d'identifier la ligne qui pose problème vraiment... si quelqu'un à une idée ?


if [ "$PS1" != "" ];
then

cd e:

PS1='\n\n\[\033[01;40;32m\]\u@\h \[\033[01;40;31m\]\A \[\033[01;31m\][\[\033[01;34m\]\W\[\033[01;31m\]]\[\033[00m\]\$'
#PS1='\n\n\[\033[01;40;32m\]\u@\h \[\033[01;31m\][\[\033[01;34m\]\W\[\033[01;31m\]]\[\033[00m\]\$'
#PS1='\n\n$WHOAMI@$HOSTNAME [\W] :'
PS2='Prog. level: '

if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi


export HOSTNAME=`hostname`
export WHOAMI=`whoami`
export LC_TYPE=iso_8859_1
export CVSROOT=:ext:rouaix@jaguar.emi.u-bordeaux.fr:/CVSROOT
export CVS_RSH=ssh

TERMINAL=`tty`
ignoreeof=4
history_control=ignoredups
HISTSIZE=50
MAILCHECK=60

alias l=`ls -CF`
alias la=`ls -a --color`
alias ls=`ls --color`
alias m=`more`
alias d=`display`
alias rm=`rm -i`

clean()
{
rm -f \#* .*~ *~ *.idx *.idx *.log *.out *.toc *.aux *.dvi *.bak *.mx1 *.mx2 Thumbs.db
rm -f core*
}


display ()
{
if [ $# -eq 1 ]
then
export DISPLAY=$1":0.0"
else
echo "usage: display nom-de-terminal"
fi
}

fi

Je vous remercie par avance, je sais que c'est pas la fin du monde un bashrc qui marche pas, mais bon, si j'évite toutes les difficultés, je progresserais jamais !

Willy
  • # Erreurs ?

    Posté par  . Évalué à 3.

    Salut,

    Ça veut dire quoi que ton bashrc plante ?
    Est-ce que tu as des messages d'erreurs qui s'affichent ?
    Si oui, quelles sont ces erreurs ?

    A vu de nez, les seules choses qui me paraissent litigieuses sont :
    - "cd e:" (je n'ai pas utilisé cygwin depuis longtemps, et je ne sais pas si cette syntaxe fonctionne : tu dois pouvoir remplacer par cd /cygdrive/e)
    - les backquotes (`) utilisées dans la définition des alias au lieu de simples (') ou doubles(") quotes

    mais j'ai peut être raté quelque chose.

    A+
    JJD
  • # chez moi

    Posté par  . Évalué à 1.

    sur ma machine, j'ai copier/coller ton script

    j'ai executer avec bash et ...

    il ne se passe pas grand chose et c'est finalement normal car le PS1 est deja definit.

    et dans ton programme tout est conditionné par l'existence de PS1.


    si PS1 != ""
    alors
    toutes tes definitions
    clean() {}
    display() {}

    finsi


    dans ce qui me semble etre ce que tu veux faire j'aurais mis


    si PS1 != ""
    alors
    definitions du PS1
    finsi

    les autres definitions
    clean() {}
    display() {}

    • [^] # ben ça alors !

      Posté par  . Évalué à 1.

      ça génère une erreur oui :

      'ash: /home/Willy/.bashrc: line 36: syntax error near unexpected token `
      'ash: /home/Willy/.bashrc: line 36: ` clean()


      le coup du "cd e" bas, même sans ça , ça marche pas. Pour ce qui est du if, ok, mais ça n'explique pas l'erreur de syntaxe.
      Pour les quotes, en fait, c'était déjà des ", et j'ai fini par essayer un autre délimiteur me disant que ça venait peut être de là...

      John Doe, tu n'as pas d'erreur de syntaxe chez toi ? !
      • [^] # Re: ben ça alors !

        Posté par  (site web personnel) . Évalué à 1.

        Salut,

        Ca sent le problème d'encodage ou plutôt celui du retour à la ligne Windows.

        Essaies de "réécrire" ton fichier avec un editeur sous ton linux.
        • [^] # Re: ben ça alors !

          Posté par  . Évalué à 1.

          bravo ! c'était ça ! je vous remerci à tous d'avoir cherché avec moi une solution !

          Willy
      • [^] # Re: ben ça alors !

        Posté par  . Évalué à 1.

        1°) je suis sous linux, et j'ai lancé ton script avec
        mon_prompt$bash tonscript.sh

        2°) dans ton exemple il semblerait que ce soit ash et non pas bash qui soit utilisé

        3°) erreur ligne 36
        comme dit plus haut, les alias sont à definir avec ' (celui du 4)et non pas ` (celui du 7)

        enfin, voir le 2°) qui explique peut-etre pourquoi le clean() n'est pas reconnu

Suivre le flux des commentaires

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