¿Cómo verificar qué shell estoy usando?

262

Leí que el terminal no es más que shell, y Unix proporciona diferentes tipos de shells:

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

Preguntas:

  • Cuando abro una ventana de terminal, ¿qué shell se abre de forma predeterminada?
  • ¿Cómo verifico cuántos shells están instalados?
  • ¿Cómo cambio el shell usado desde mi cuenta?
pregunta goutham 28.02.2015 - 04:58

6 respuestas

317

Puede escribir el siguiente comando en su terminal para ver qué shell está utilizando:

echo $0

El resultado tendrá un aspecto similar al siguiente si está utilizando el terminal bash ( Bourne Again Shell ):

-bash
    
respondido por el kingmilo 28.02.2015 - 05:03
86

Para encontrar el shell que tiene en el entorno predeterminado, puede verificar el valor de la variable de entorno SHELL :

echo $SHELL

Para encontrar la instancia de shell actual, busque el proceso (shell) que tiene el PID de la instancia de shell actual.

Para encontrar el PID de la instancia actual de shell:

echo "$$"

Ahora para encontrar el proceso que tiene el PID:

ps -p <PID>

Poniéndolos juntos:

ps -p "$$"
    
respondido por el heemayl 28.02.2015 - 05:06
18

$SHELL te da el shell predeterminado. $0 te da el shell actual.

Por ejemplo: tengo a bash como mi shell predeterminado, que uso para mi aplicación de Terminal. Pero para mi aplicación iTerm2, uso el comando cuando se abre la ventana: /bin/ksh .

Así que mi $0 me da /bin/ksh en iTerm2. $SHELL me da /bin/bash en iTerm2. $0 , $SHELL me da /bin/bash en la Terminal

    
respondido por el nakulchawla09 18.11.2016 - 12:45
7

Para saber cuál es el shell predeterminado para su usuario, puede ejecutar:

echo "$SHELL"

Por ejemplo, si está utilizando Bash, debería obtener el siguiente resultado:

/bin/bash

Si no cambiaste ninguna configuración, debería ser Bash ya que Bash es el shell predeterminado en Ubuntu.

    
respondido por el kos 28.02.2015 - 05:02
4

Las otras respuestas tienden a usar características específicas de la shell, pero estamos tratando de descubrir qué shell estamos usando, por lo que asumen la respuesta al problema. Por ejemplo, ninguna de las respuestas funcionará con peces.

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

En su lugar, use la sintaxis $$ en una invocación de sh, pero luego estamos buscando el PPID, no el PID. Usa el PPID para encontrar el cmd.

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

Gracias por mejorar @muru

    
respondido por el Evan Benn 06.04.2018 - 06:00
1

El post original hizo tres preguntas. Las respuestas proporcionadas cubren la primera pregunta, "Cuando abro una ventana de terminal, ¿qué shell se abre de manera predeterminada?" También responden una pregunta que NO se hizo, a saber, "¿Cómo puedo saber qué shell se está ejecutando actualmente en el terminal?" Sin embargo, por lo que puedo ver, nadie ha respondido la segunda o la tercera pregunta formulada originalmente, a saber, "¿Cómo verifico cuántos shells están instalados?" y "¿Cómo cambio el shell utilizado desde mi cuenta?"

  • Para responder "¿Cómo verifico cuántos shells están instalados?" el siguiente comando mostrará una lista de todos los shells disponibles:

cat / etc / shells

Por ejemplo, en una instalación predeterminada de Ubuntu 18.10 esto da:

# / etc / shells: shells de inicio de sesión válidos

/ bin / sh

/ bin / dash

/ bin / bash

/ bin / rbash

Sin embargo, de forma predeterminada, sh es un enlace simbólico al guión, mientras que rbash enlaza con bash con la opción -r ("bash restringido"), por lo que en realidad solo hay dos shells, no cuatro como sugiere la lista anterior. El siguiente comando le mostrará si alguno de los shells enumerados son en realidad enlaces simbólicos, y si es así, a dónde se vinculan: ls -l / bin

  • Ahora para la pregunta "¿Cómo cambio el shell que se usa desde mi cuenta?" Suponiendo que esto significa "¿Cómo cambio permanentemente el shell predeterminado que utilizará un terminal", hay una respuesta en enlace
respondido por el Michael D 07.11.2018 - 12:54

Lea otras preguntas en las etiquetas