569 votes

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

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

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

Questions :

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

666voto

user46646 Points 11284

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

echo $0

Le résultat ressemblera quelque chose de similaire à ce qui suit si vous utilisez le 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 la coquille:

echo "$$"

Maintenant pour trouver le processus ayant le PID:

ps -p 

En mettant le tout 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 comme suit 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 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 sur fish.

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

Au lieu de cela, utilisez la syntaxe $$ dans une invocation de sh, mais nous cherchons alors 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

L'article original posait trois questions. Les réponses données couvrent la première question, "Lorsque 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 est actuellement en cours d'exécution dans le terminal ?" Cependant, autant que je puisse voir, personne n'a répondu aux deuxième et troisième questions initialement posées, à 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 listera 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 se lie à bash avec l'option -r ("bash restreint"), il n'y a donc en fait que deux shells, et non 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 de manière permanente 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