J'ai lu que le terminal n'est rien d'autre que Shell, et Unix fournit différentes saveurs de coques:
Vous pouvez taper la commande suivante dans votre terminal pour voir quel shell vous utilisez:
echo $0
Le résultat ressemblera à ce qui suit si vous utilisez le terminal bash (Bourne Again Shell):
-bash
Pour trouver le shell que vous avez sur l'environnement par défaut, vous pouvez vérifier la valeur de la variable d'environnement Shell
name__:
echo $Shell
Pour rechercher l'instance Shell actuelle, recherchez le processus (Shell) ayant le PID de l'instance Shell actuelle.
Pour trouver le PID de l'instance actuelle de Shell:
echo "$$"
Maintenant, pour trouver le processus ayant le PID:
ps -p <PID>
Mettre ensemble:
ps -p "$$"
$Shell
vous donne le shell par défaut. $0
vous donne le shell actuel.
Par exemple: bash est mon shell par défaut que j'utilise pour mon application Terminal. Mais pour mon application iTerm2, j'utilise la commande lorsque la fenêtre s'ouvre: /bin/ksh
.
Donc, mon $0
me donne /bin/ksh
sur iTerm2. $Shell
me donne /bin/bash
sur iTerm2. $0
, $Shell
me donne /bin/bash
sur le terminal
Les autres réponses utilisent généralement des fonctionnalités spécifiques à Shell, mais nous essayons de découvrir quel Shell nous utilisons, elles supposent donc la réponse au problème. Par exemple, aucune des réponses ne fonctionnera sur le poisson.
sh -c 'ps -p $$ -o ppid=' | xargs ps -o cmd= -p
À la place, utilisez la syntaxe $$ dans un appel de sh, mais nous recherchons alors le PPID et non le PID. Utilisez le PPID pour trouver le cmd.
sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'
Merci pour l'amélioration @muru
Pour savoir quel est le shell par défaut pour votre utilisateur, vous pouvez exécuter:
echo "$Shell"
Par exemple, si vous utilisez Bash, vous devriez obtenir le résultat suivant:
/bin/bash
Si vous n'avez modifié aucune configuration, il devrait s'agir de Bash, car Bash est le shell par défaut sous Ubuntu.
Le message original posait trois questions. Les réponses données couvrent la première question, "Quand j'ouvre une fenêtre de terminal, quel Shell est ouvert par défaut?" Ils répondent également à une question qui N'A PAS été posée, à savoir "Comment puis-je savoir quel Shell est en cours d'exécution dans le terminal?" Toutefois, pour autant que je sache, personne n’a répondu à la deuxième ou à la troisième question posée à l’origine, à savoir: "Comment puis-je vérifier le nombre de réservoirs installés?" et "Comment changer le shell utilisé depuis mon compte?"
chat/etc/coquilles
Par exemple, sur une installation par défaut d’Ubuntu 18.10, ceci donne:
#/etc/shells: shells de connexion valides
/ bin/sh
/ bin/dash
/ bin/bash
/ bin/rbash
Cependant, par défaut, sh est un lien symbolique vers dash, tandis que rbash se connecte à bash avec l'option -r ("restricted bash"), de sorte qu'il n'y a en réalité que deux shells, et non quatre comme le suggère la liste ci-dessus. La commande suivante vous montrera si l'un des shells listés est en fait un lien symbolique et, le cas échéant, à quel lien: ls -l/bin