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:06:15
echo $SHELL ??
Marsh Posté le 23-10-2003 à 11:39:51
Code :
|
Ensuite certains shell positionnent des variables particulières :
$BASH_VERSION pour bash, $ZSH_VERSION pour zsh...
Marsh Posté le 23-10-2003 à 12:43:37
sinon env | grep SHELL
Marsh Posté le 24-10-2003 à 10:00:05
Franchement, vous cherchez la complication les gars
Citation : sinon env | grep SHELL |
Citation : tu regarde dans le /etc/passwd |
Citation : cat /proc/$$/cmdline |
Marsh Posté le 24-10-2003 à 13:06:41
of course
Pourquoi faire simple
Marsh Posté le 28-10-2003 à 06:02:12
Sauf que :
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)
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
Marsh Posté le 28-10-2003 à 11:51:18
heuuuu... le /proc/$$/cmdline, je suis pas très sur de sa portabilité
C'est vraiment du dédié linux, ça , non ?
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
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 ... |
Dans ce cas: ver
--> []
Marsh Posté le 28-10-2003 à 15:58:44
Matafan 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.
Marsh Posté le 28-10-2003 à 15:59:54
ArSuniK a écrit : |
Le pb du $0 c'est si tu cherches à déterminer le shell depuis un script, c'est mort
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
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 )
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.
Marsh Posté le 13-11-2003 à 17:52:28
Matafan a écrit : C'est tout a fait ça. |
/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.
Marsh Posté le 23-10-2003 à 10:04:27