Comment vérifier quel shell j'utilise?

264

J'ai lu que le terminal n'est rien d'autre qu'un shell, et Unix fournit différentes saveurs de shell:

  • Bourne shell (sh)
  • C shell (csh)
  • shell TC (tcsh)
  • shell Korn (ksh)
  • Bourne Again shell (bash)

Questions:

  • Lorsque j'ouvre une fenêtre de terminal, quel shell est ouvert par défaut?
  • Comment puis-je vérifier le nombre de shell installés?
  • Comment changer le shell utilisé depuis mon compte?
posée goutham 28.02.2015 - 04:58
la source

6 réponses

320

Vous pouvez taper la commande suivante dans votre terminal pour voir quel shell vous utilisez:

echo $0

Le résultat ressemblera à celui ci-dessous si vous utilisez le terminal bash ( Bourne Again Shell ):

-bash
    
réponse donnée kingmilo 28.02.2015 - 05:03
la source
86

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 :

echo $SHELL

Pour rechercher l'instance de shell actuelle, recherchez le processus (shell) ayant le PID de l'instance de shell actuelle.

Pour trouver le PID de l'instance actuelle du shell:

echo "$$"

Maintenant, trouvez le processus ayant le PID:

ps -p <PID>

Rassembler le tout:

ps -p "$$"
    
réponse donnée heemayl 28.02.2015 - 05:06
la source
18

$SHELL vous donne le shell par défaut. $0 vous donne le shell actuel.

Par exemple: bash est le shell 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

    
réponse donnée nakulchawla09 18.11.2016 - 12:45
la source
7

Pour savoir quel est le shell par défaut de 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 c'est le shell par défaut sous Ubuntu.

    
réponse donnée kos 28.02.2015 - 05:02
la source
4

Les autres réponses utilisent généralement des fonctionnalités spécifiques du shell, mais nous essayons de déterminer le shell que 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

    
réponse donnée Evan Benn 06.04.2018 - 06:00
la source
1

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?"

  • Pour répondre "Comment puis-je vérifier le nombre de coques installées?" la commande suivante listera tous les shells disponibles:

cat / etc / shells

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 est lié à bash avec l'option -r ("restricted bash"). Il n'y a donc que deux shells, et non quatre comme le suggère la liste ci-dessus. La commande suivante vous montrera si l'un des coques répertoriés est en fait un lien symbolique et, le cas échéant, à quel lien: ls -l / bin

  • Maintenant, posez-vous la question "Comment puis-je changer le shell utilisé depuis mon compte?" En supposant que cela signifie "Comment changer en permanence le shell par défaut qu'un terminal utilisera", une réponse est disponible à l'adresse link .
réponse donnée 07.11.2018 - 12:54
la source

Lire d'autres questions sur les étiquettes