Bonjour a tous et a toutes (allez les filles ! :hammer:)

Je suis en train d'essayer de creer un liveCD base sur Fedora 7 avec des applications persos dessus.

J'ai besoin de modifier le PATH par defaut de l'utilisateur du liveCD, pour cela, je dois modifier le fichier /etc/profile.

Lors de la creation du liveCD, je peux ajouter des lignes a la fin de ce fichier (par l'intermediaire d'un script dans le fichier kickstart).

Le fichier /etc/profile contient une fonction pathmunge() permettant d'ajouter des chemins au PATH, malheureusement, elle est "unsettee" a la fin du fichier. J'essaie donc de la faire reecrire par mon script kickstart a l'aide d'une suite de echo.

Voila ce que je souhaite obtenir dans /etc/profile :
pathmunge () {
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else
              PATH=$1:$PATH
           fi
        fi
}
Dans mon kickstart, j'ai donc ajoute :
echo "pathmunge () {" >> /etc/profile
echo "        if ! echo \$PATH | /bin/egrep -q \"(^|:)\$1(\$|:)\" ; then" >> /etc/profile
echo "           if [ \"\$2\" = \"after\" ] ; then" >> /etc/profile
echo "              PATH=\$PATH:\$1" >> /etc/profile
echo "           else" >> /etc/profile
echo "              PATH=\$1:\$PATH" >> /etc/profile
echo "           fi" >> /etc/profile
echo "        fi" >> /etc/profile
echo "}" >> /etc/profile
echo "pathmunge /opt/mspgcc/bin" >> /etc/profile
echo "pathmunge /opt/worldsens/bin" >> /etc/profile
echo "unset pathmunge" >> /etc/profile
Malheureusement, il semblerait que les variables soient interpretees et j'obtiens :
- le PATH de root au lieu de la chaine \$PATH
- une chaine vide au lieu de la chaine \$1
- une chaine vide a la place de la chaine \$2

D'ou ma question : comment faire en sorte que tout ca ne soit pas interprete et ecrit texto dans /etc/profile ?

Merci d'avance

PS: j'ai aussi essaye avec des simples quotes et sans \, le resultat est un peu mieux mais ce n'est toujours pas ca... 🙁

PS2: mon premier message sur Fedora-fr ! Bisous a tous
Salut cherie ! :-D

Tu pourrais essayer de modifier ton /etc/profile avec sed plutot qu'avec des echo. En plus, tu pourrais ecrire ou tu veux dans le fichier et donc tu n'aurais pas a reecrire la fonction pathmunge() :
sed -i "/unset pathmunge/i\\\n#add worldsens and mspgcc to PATH\npathmunge /opt/mspgcc/bin\npathmunge /opt/worldsens/bin\n" profile
Mets cette ligne dans ton kickstart et cela ajoutera :
#add worldsens and mspgcc to PATH
pathmunge /opt/mspgcc/bin
pathmunge /opt/worldsens/bin
juste avant le "unset pathmunge" 🙂

Bisous

PS : @tous : si c'est pas une geekette ma copine ? :hammer:
Utilise des quotes dures ' aux lieux des molles " pour éviter que le shell n'expande tes paramètres.
Tobias
milady wrote:PS: j'ai aussi essaye avec des simples quotes et sans \, le resultat est un peu mieux mais ce n'est toujours pas ca... 🙁
tobi1canobe wrote:Utilise des quotes dures ' aux lieux des molles " pour éviter que le shell n'expande tes paramètres.
Je precise qu'elle l'avait fait (comme son message le disait).

Pourtant, les parametres etaient bien interpretes... :-?

EDIT: j'ai repris la generation de son liveCD car mademoiselle est partie faire la fete et j'etais pas invite :hammer:

Avec mon sed, ca a fonctionne, l'utilisateur du liveCD a bien le bon PATH. Pas de souci donc. Par contre, ca m'interesserait de savoir comment on aurait pu faire pour echapper completement ses parametres et donc les faire ecrire tels quels avec echo... :-?
echo "pathmunge () {" >> /etc/profile
echo "        if ! echo \$PATH | /bin/egrep -q \"(^|:)\$1(\$|:)\" ; then" >> /etc/profile
echo "           if [ \"\$2\" = \"after\" ] ; then" >> /etc/profile
echo "              PATH=\$PATH:\$1" >> /etc/profile
echo "           else" >> /etc/profile
echo "              PATH=\$1:\$PATH" >> /etc/profile
echo "           fi" >> /etc/profile
echo "        fi" >> /etc/profile
echo "}" >> /etc/profile
echo "pathmunge /opt/mspgcc/bin" >> /etc/profile
echo "pathmunge /opt/worldsens/bin" >> /etc/profile
echo "unset pathmunge" >> /etc/profile
T'as pas honte de faire quelque chose d'aussi bestiale ? Vois le man bash, au chapitre REDIRECTIONS, Appending Redirected Output. Et l'ABS aussi.
Anvil wrote:T'as pas honte de faire quelque chose d'aussi bestiale ? Vois le man bash, au chapitre REDIRECTIONS, Appending Redirected Output. Et l'ABS aussi.
Je cautionne moyen que quelqu'un d'autre que moi dise a ma copine qu'elle est "bestiale" :hammer:

En tout cas, merci pour avoir mentionne le mot ABS, ca m'a permis de trouver une page plutot sympa et complete : http://tldp.org/LDP/abs/html/

A part ca, je vois pas ce qu'il y a de mal dans ses redirections... La section du man bash que tu mentionnes contient tres peu :
Appending Redirected Output
Redirection of output in this fashion causes the file whose name results from the expansion of word to be opened for appending on file
descriptor n, or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created.

The general format for appending output is:

[n]>>word
Tu pourrais preciser ? Peut-etre n'en faire qu'une seule (avec retours a la ligne dedans) pour eviter d'ouvrir plusieurs fois le fichier ? Quelque chose d'autre ? :roll: