Un mot d'avertissement : la question que vous semblez avoir posée, la question que vous vouliez poser et la question que vous auriez dû poser sont trois choses différentes.
"Quel shell l'utilisateur utilise" est ambigu. Votre tentative semble vouloir déterminer quel shell exécute votre script. Cela va toujours être ce que vous mettez dans la balise #!
de la ligne script, à moins que vous ayez voulu que vos utilisateurs modifient ce script, donc cela ne vous est pas utile.
Ce que vous vouliez demander, je pense, c'est quel est le shell préféré de l'utilisateur. Cela ne peut pas être déterminé de manière totalement fiable, mais vous pouvez couvrir la plupart des cas. Vérifiez le SHELL
variable d'environnement. Si elle contient fish
, zsh
, bash
, ksh
o tcsh
le shell préféré de l'utilisateur est probablement ce shell. Cependant, ce n'est pas la bonne question pour votre problème.
Des fichiers comme .bashrc
, .zshrc
, .cshrc
et ainsi de suite sont des fichiers d'initialisation du shell. Ils ne sont pas le bon endroit pour définir des variables d'environnement. Une variable d'environnement définie à cet endroit ne serait disponible que dans un terminal où l'utilisateur a lancé cet interpréteur de commandes et non dans des programmes lancés depuis une interface graphique. La définition remplacerait également toute personnalisation effectuée par l'utilisateur dans une sous-session.
Le bon endroit pour définir une variable d'environnement est dans un fichier de démarrage de session. Ceci n'est pas lié au choix de l'interpréteur de commandes par l'utilisateur. Malheureusement, il n'existe pas d'endroit unique pour définir les variables d'environnement. Sur beaucoup de systèmes, ~/.profile
fonctionnera, mais ce n'est pas universel. Voir https://unix.stackexchange.com/questions/4621/correctly-setting-environment et les autres messages que je cite pour une discussion plus approfondie.
0 votes
Ne serait-il pas plus judicieux de mettre cela dans
.profile
qui est portable sur tous les shells, y comprissh
?0 votes
@tripleee Salut, car c'est une chose spécifique pour bash ou zsh je pense....
1 votes
Je vous suggère de lire cette section du guide de scripting bash avancé .
1 votes
$0 == "-zsh"
au lieu de$0 == "zsh"