Y'a une commande pour savoir sur quel shell on est ?

Y'a une commande pour savoir sur quel shell on est ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 23-10-2003 à 10:04:27    

:??:

Reply

Marsh Posté le 23-10-2003 à 10:04:27   

Reply

Marsh Posté le 23-10-2003 à 10:06:15    

echo $SHELL  ??


---------------
C'est parce que la vitesse de la lumière est supérieure à celle du son, que tant de gens paraissent brillants avant d'avoir l'air con !
Reply

Marsh Posté le 23-10-2003 à 10:19:42    

ou tu regarde dans le /etc/passwd
 
A+

Reply

Marsh Posté le 23-10-2003 à 11:39:51    

Code :
  1. echo $0


Ensuite certains shell positionnent des variables particulières :
$BASH_VERSION pour bash, $ZSH_VERSION pour zsh...

Reply

Marsh Posté le 23-10-2003 à 11:57:30    

Ok merci :)

Reply

Marsh Posté le 23-10-2003 à 12:43:37    

sinon env | grep SHELL :)


---------------
Preuve est faite que visages dévots et pieuses actions nous servent à enrober de sucre le diable lui-même.
Reply

Marsh Posté le 24-10-2003 à 03:52:07    

Ou aussi :

cat /proc/$$/cmdline

Reply

Marsh Posté le 24-10-2003 à 10:00:05    

Franchement, vous cherchez la complication les gars :lol:
 

Citation :

sinon env | grep SHELL


Citation :

tu regarde dans le /etc/passwd


Citation :

cat /proc/$$/cmdline


Message édité par iznogoud_23 le 24-10-2003 à 10:00:38

---------------
C'est parce que la vitesse de la lumière est supérieure à celle du son, que tant de gens paraissent brillants avant d'avoir l'air con !
Reply

Marsh Posté le 24-10-2003 à 13:06:41    

:sol: of course
 
Pourquoi faire simple :??:
 
 
 
:D


---------------
Preuve est faite que visages dévots et pieuses actions nous servent à enrober de sucre le diable lui-même.
Reply

Marsh Posté le 28-10-2003 à 06:02:12    

Sauf que :

  • $SHELL peux a priori être mis a n'importe quoi
  • /etc/passwd ne veux strictement rien dire (j'ai très bien pû lancer un autre shell)
  • env | grep SHELL est un peu ricidule car equivalent à echo $SHELL est plus compliqué et pas plus sûr

Bref cat /proc/$$/cmdline est pour l'instant la solution la plus fiable, avec les autre qui suivent la même idée (genre ls -l /proc/$$/exe) :ange:


Message édité par matafan le 28-10-2003 à 06:04:27
Reply

Marsh Posté le 28-10-2003 à 06:02:12   

Reply

Marsh Posté le 28-10-2003 à 11:48:43    

Et si j'ai inversé /bin/bash et /bin/ksh , est-ce que le cat /proc/$$/cmdline est encore fiable ? Je veux dire, si le nom de l'exécutable de mon shell n'est pas le nom du shell en question ?
 
Edit: c'est bien ce que je pensais ... Si j'appelle mon shell par la commande /bin/sh (qui est un lien symbolique vers /bin/bash ou autre), le "cat /proc/$$/cmdline" me sort logiquement "/bin/sh", du coup je ne sais pas quel shell j'utilise vraiment ...
 
Pour trouver avec certitude quel shell on utilise, il faudrait pousser un peu plus loin, genre:
 
`cat /proc/$$/cmdline` --version


Message édité par [Albator] le 28-10-2003 à 11:55:57
Reply

Marsh Posté le 28-10-2003 à 11:51:18    

heuuuu... le /proc/$$/cmdline, je suis pas très sur de sa portabilité :D
C'est vraiment du dédié linux, ça , non ? ;)

Reply

Marsh Posté le 28-10-2003 à 11:59:21    

Il y a un /proc sur certains autres unices, mais je ne suis pas sûr qu'ils soient comme sous Linux ...
 
En tout cas, il est vrai qu'on n'a jamais précisé qu'il fallait que ça marche sous Linux :)


Message édité par [Albator] le 28-10-2003 à 12:00:15
Reply

Marsh Posté le 28-10-2003 à 15:16:13    

[Albator] a écrit :

Il y a un /proc sur certains autres unices, mais je ne suis pas sûr qu'ils soient comme sous Linux ...
 
En tout cas, il est vrai qu'on n'a jamais précisé qu'il fallait que ça marche sous Linux :)


Dans ce cas: ver  :whistle:  
 
 
--> []

Reply

Marsh Posté le 28-10-2003 à 15:58:44    

Matafan a écrit :


Bref cat /proc/$$/cmdline est pour l'instant la solution la plus fiable, avec les autre qui suivent la même idée (genre ls -l /proc/$$/exe) :ange:


 
Je ne connais aucun shell qui ne positionne pas $0 à cette valeur.
Ma solution en testant les valeurs de BASH_VERSION, ZSH_VERSION... n'était pas bien ?
En plus comme ça on sait de suite si le sh utilisé est un lien sur bash ou pas.

Reply

Marsh Posté le 28-10-2003 à 15:59:54    

ArSuniK a écrit :


 
Je ne connais aucun shell qui ne positionne pas $0 à cette valeur.
Ma solution en testant les valeurs de BASH_VERSION, ZSH_VERSION... n'était pas bien ?
En plus comme ça on sait de suite si le sh utilisé est un lien sur bash ou pas.
 


 
Le pb du $0 c'est si tu cherches à déterminer le shell depuis un script, c'est mort :)

Reply

Marsh Posté le 28-10-2003 à 16:01:50    

En même temps, changer la valeur de $SHELL, faut etre vicieux et avoir que ça à foutre :lol:

Reply

Marsh Posté le 28-10-2003 à 16:10:33    

Ca veut dire quoi $$ dans un chemin ?

Reply

Marsh Posté le 28-10-2003 à 17:30:55    

ca doit etre le PID du programme en cours si je me souviens bien
 
et dans /proc, chaque PID existe sous la forme d'un pseudo-repertoire qui contient des pseudo-fichiers avec les infos sur ce processus... par exemple cmdline contient la ligne de commande qui a lancé ce processus :)
 
( a confirmer, ca fait longtemps que j'ai pas etudié ce genre de truc, je dis ca de memoire depuis un poste windows au bureau :lol: )

Reply

Marsh Posté le 29-10-2003 à 04:35:59    

C'est tout a fait ça.
 
Autrement /proc existe a ma connaissance sur tous les unix récents. Par contre le contenu des répertoires /proc/PID varie d'un unix a l'autre... /proc/PID/exe n'existe pas sur AIX par exemple (AIX a par contre /proc/PID/objects/a.out, mais ce n'est pas un lien symbolique). Je pense que /proc/PID/cmdline existe partout par contre.


Message édité par matafan le 29-10-2003 à 04:37:44
Reply

Marsh Posté le 13-11-2003 à 17:52:28    

Matafan a écrit :

C'est tout a fait ça.
 
Par contre le contenu des répertoires /proc/PID varie d'un unix a l'autre... /proc/PID/exe n'existe pas sur AIX par exemple (AIX a par contre /proc/PID/objects/a.out, mais ce n'est pas un lien symbolique). Je pense que /proc/PID/cmdline existe partout par contre.


 
/proc/PID/cmdline n'existe pas sous solaris... /proc/PID/psinfo te permet de voir quel shell tu utilises (a vu d'oeil)
 
Par contre solaris a bel et bien /proc/PID/objects/a.out comme AIX.
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed