Re: Nom du shell courant

Top Page

Reply to this message
Author: Marc TERRIER
Date:  
To: guilde
Subject: Re: Nom du shell courant
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