Sous csh
family shells, vous obtiendrez votre shell en cours d'exécution avec cette commande :
% echo $shell
Si csh
a été exécuté, directement ou indirectement, à partir d'un shell de la famille Bourne dont la variable SHELL est exportée, ce qui est le cas le plus fréquent, la variable SHELL reste intacte, de sorte que echo $SHELL
affichera toujours sa valeur précédente, ce qui pourrait prêter à confusion.
C'est ce qui se passe pour vous, l'un des processus parentaux de votre tcsh
session était bash
. Si bash
est lancé avec le SHELL
non définie, elle la définit comme étant le chemin d'accès à la variable bash
malgré ce que dit sa documentation. Notez que le lancement d'une nouvelle famille de shells Bourne n'aurait pas non plus modifié la variable SHELL si elle était définie. SHELL n'est certainement pas le moyen d'identifier le shell que vous exécutez, mais simplement de savoir quel est votre shell par défaut dans un environnement POSIX.
Un moyen portable de savoir quel shell est en cours d'exécution serait :
ps -o comm= -p $$
Cependant, cette dernière commande suppose que $$
est réglé sur le PID du processus en cours, ce qui, malheureusement, est le cas de certains shells exotiques comme le fish
pause. Il existe une méthode encore plus portable pour contourner ce problème :
env sh -c 'basename $(ps -o comm= -p $(ps -o ppid= -p $$))'
0 votes
Essayez
echo $0
$SHELL est défini dans votre .profile comme une variable d'environnement.0 votes
@Allan -
echo $0
me donne juste une ligne blanche - il y a des shells non POSIX