• # Bien lire les manpages

    Posté par . En réponse au message diverses questions : permissions, bash/exec, suid et sed. Évalué à 3.

    $ exec ./monscript

    $VAR= #--> le process monscript remplace le bash dans lequel il a été lancé. VAR a été déclarée dans ce bash.


    Attention, grosse imprécision ! "exec" remplace le contenu d'un processus, donc l'image d'un programme exécutable en langage machine, par celle d'un autre.

    Ton shell n'a donc pas été remplacé par ton script mais par un autre shell, qui lui s'est initialisé comme il l'a voulu, et qui a interprété ton programme.

    Si tu veux demander à ton shell courant d'interpréter lui-même un script plutôt que d'ouvrir un sous-shell, par exemple pour relire ton .bashrc après modification, il faut "sourcer" ton script. Voir la commande source ou le point tout seul (synonymes).


    Pourquoi sed m'affiche le reste? c'est-à-dire "7 root root 4096 2008年03月07日 10:24 /tmp/"

    Parce que tu as collé ton marqueur de début de ligne "^" à l'intérieur de l'expression régulière elle-même. Fous-le au tout début de ton motif, avant le \( et ça devrais marcher beaucoup mieux.