569 votes

Comment puis-je vérifier quel shell j'utilise ?

J'ai lu que le terminal n'est rien d'autre que le shell, et Unix propose différentes variantes de shell:

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

Questions :

  • Quand j'ouvre une fenêtre de terminal, quel shell est ouvert par défaut ?
  • Comment puis-je vérifier combien de shells sont installés ?
  • Comment puis-je changer le shell utilisé pour mon compte ?

666voto

user46646 Points 11284

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

echo $0

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

-bash

184voto

heemayl Points 85741

Pour trouver la coquille que vous avez sur l'environnement par défaut, vous pouvez vérifier la valeur de la variable d'environnement SHELL :

echo $SHELL

Pour trouver l'instance de coquille actuelle, recherchez le processus (coquille) ayant le PID de l'instance de coquille actuelle.

Pour trouver le PID de l'instance actuelle de coquille :

echo "$$"

Maintenant pour trouver le processus ayant le PID :

ps -p 

En mettant tout cela ensemble :

ps -p "$$"

50voto

thenakulchawla Points 613

$SHELL vous donne l'interpréteur de commandes par défaut. $0 vous donne l'interpréteur de commandes actuel.

Par exemple : j'ai bash comme interpréteur de commandes 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.

Ainsi mon $0 me donne /bin/ksh sur iTerm2. $SHELL me donne /bin/bash sur iTerm2. $0,$SHELL me donne /bin/bash sur Terminal

19voto

Evan Benn Points 289

Les autres réponses ont tendance à utiliser des fonctionnalités spécifiques à l'interpréteur de commandes, mais nous essayons de découvrir quel interpréteur de commandes nous utilisons, donc elles supposent la réponse au problème. Par exemple, aucune des réponses ne fonctionnera avec fish.

sh -c 'ps -p $$ -o ppid=' | xargs ps -o comm= -p

Utilisez plutôt la syntaxe $$ dans une invocation de sh, mais alors nous cherchons le PPID et non le PID. Utilisez le PPID pour trouver la commande.

sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'

Merci pour l'amélioration @muru

11voto

Michael D Points 171

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 ?" Elles répondent également à une question qui n'a PAS été posée, à savoir "Comment puis-je savoir quel shell s'exécute actuellement dans le terminal ?" Cependant, à ce que je vois, personne n'a répondu aux deuxième et troisième questions posées initialement, à savoir "Comment vérifier combien de shells sont installés ?" et "Comment changer le shell utilisé à partir de mon compte ?"

  • Pour répondre à la question "Comment vérifier combien de shells sont installés ?", la commande suivante répertorie tous les shells disponibles :

    cat /etc/shells

    Par exemple, sur une installation par défaut d'Ubuntu 18.10, cela donne :

    # /etc/shells: valid login shells
    /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 ("bash restreint"), donc il n'y a en fait que deux shells, pas quatre comme la liste ci-dessus le suggère. La commande suivante vous montrera si l'un des shells répertoriés est en fait un lien symbolique, et le cas échéant vers où il pointe : ls -l /bin

  • Maintenant, pour la question "Comment changer le shell utilisé à partir de mon compte ?" En supposant que cela signifie "Comment changer définitivement le shell par défaut qu'un terminal utilisera", il y a une réponse ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X