Selon Stéphane Bonhomme <stephane@???>:
> $0 --version
>
> est peut etre plus interessant par contre.... (sauf sous csh)
Pas sûr... Faudrait voir sous différentes versions de Linux, mais en tout cas,
sous Solaris ( 7 et 10, toujours ) :
- avec sh et ksh, '$0 --version' renvoie un magnifique... rien du tout.
- avec csh, '$0 --version' renvoie "No file for $0"
- avec tcsh, '$0 --version' renvoie "-tcsh: Command not found."
Je m'imaginais que ça m'indiquerait un nom de shell et un numéro de version,
mais on en est loin.
bash n'est pas installé sur la machine Solaris 7 où je fais ces essais, mais sur
celle en Solaris 10, avec bash, '$0 --version' renvoie :
"GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc."
C'est très verbeux, par rapport au résultat de "ps -e | grep $$ | awk '{ print
$4; }'", mais on a l'info recherchée.
Toujours sous Solaris 10, et toujours sous bash, ma commande
ps -e | grep $$ | awk '{ print $4; }'
renvoie pas moins de quatre lignes de résultat, parce qu'il se trouve que mon
bash a un PID de 406 et plusieurs autres process ont les chiffres 406 dans leur
PID :
bash-3.00$ ps -e | grep $$
24068 ? 0:00 dtlogin
5406 ? 0:00 dtexec
21406 ? 0:01 sshd
406 pts/133 0:00 bash
Je propose donc de remplacer :
ps -e | grep $$ | awk '{ print $4; }'
par :
ps -e | grep " $$ " | awk '{ print $4; }'
Et là, ça donne le résultat attendu, uniquement le résultat attendu. Sauf que
ça risque de ne pas fonctionner correctement le jour où on se retrouve avec un
process dont le PID est supérieur à 99999 (pas d'espace devant le premier
chiffre). J'ai essayé d'encadrer le $$, dans le grep, par des ^ et $
d'expressions rationnelles, pour isoler le 406 des autres chiffres situés avant
ou après, mais sans succès, même en entourant $$ avec des backquotes... :-(
--
Marc
Mail : marc.terrier [at] free.fr
Site :
http://marc.terrier.free.fr