Come verificare quale shell sto usando?

264

Ho letto che il terminale non è altro che shell e Unix fornisce diversi tipi di shell:

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

Domande:

  • Quando apro una finestra di terminale, quale shell è aperta di default?
  • Come faccio a verificare quante shell sono installate?
  • Come cambio la shell utilizzata dal mio account?
posta goutham 28.02.2015 - 04:58

6 risposte

320

Puoi digitare il seguente comando nel tuo terminale per vedere quale shell stai usando:

echo $0

Il risultato sarà simile al seguente se utilizzi il terminale bash ( Bourne Again Shell ):

-bash
    
risposta data kingmilo 28.02.2015 - 05:03
86

Per trovare la shell che hai sull'ambiente predefinito puoi controllare il valore della variabile d'ambiente SHELL :

echo $SHELL

Per trovare l'istanza corrente della shell, cerca il processo (shell) che ha il PID dell'istanza corrente della shell.

Per trovare il PID dell'istanza corrente della shell:

echo "$$"

Ora per trovare il processo con il PID:

ps -p <PID>

Metterlo insieme:

ps -p "$$"
    
risposta data heemayl 28.02.2015 - 05:06
18

$SHELL fornisce la shell predefinita. $0 fornisce la shell corrente.

Ad esempio: ho bash come shell predefinita, che utilizzo per la mia app terminal. Ma per la mia app iTerm2, utilizzo il comando quando si apre la finestra: /bin/ksh .

Quindi il mio $0 mi dà /bin/ksh su iTerm2. $SHELL mi dà /bin/bash su iTerm2. $0 , $SHELL mi dà /bin/bash sul Terminale

    
risposta data nakulchawla09 18.11.2016 - 12:45
7

Per sapere qual è la shell predefinita per il tuo utente, puoi eseguire:

echo "$SHELL"

Ad esempio, se utilizzi Bash dovresti ottenere il seguente output:

/bin/bash

Se non hai cambiato nessuna configurazione, dovrebbe essere Bash poiché Bash è la shell predefinita su Ubuntu.

    
risposta data kos 28.02.2015 - 05:02
4

Le altre risposte tendono ad usare caratteristiche specifiche della shell, ma stiamo cercando di scoprire quale shell stiamo usando, così assumono la risposta al problema. Ad esempio nessuna delle risposte funzionerà con i pesci.

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

Usa invece la sintassi $$ in una chiamata di sh, ma poi cerchiamo il PPID e non il PID. Usa il PPID per trovare il cmd.

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

Grazie per il miglioramento @muru

    
risposta data Evan Benn 06.04.2018 - 06:00
1

Il post originale ha posto tre domande. Le risposte fornite coprono la prima domanda, "Quando apro una finestra di terminale, quale shell viene aperta di default?" Rispondono anche a una domanda che NON è stata posta, ovvero "Come posso scoprire quale shell è attualmente in esecuzione nel terminale?" Tuttavia, per quanto posso vedere, nessuno ha risposto né alla seconda né alla terza domanda originariamente poste, ovvero "Come faccio a verificare quante shell sono installate?" e "Come cambio la shell utilizzata dal mio account?"

  • Per rispondere "Come posso verificare quante shell sono installate?" il seguente comando elencherà tutte le shell disponibili:

cat / etc / shells

Ad esempio, su un'installazione predefinita di Ubuntu 18.10 ciò fornisce:

# / etc / shell: shell di login valide

/ bin / sh

/ bin / dash

/ bin / bash

/ bin / rbash

Tuttavia, per impostazione predefinita sh è un collegamento simbolico al trattino, mentre i link rbash a bash con l'opzione -r ("restricted bash") quindi ci sono solo due shell, non quattro come suggerisce l'elenco precedente. Il seguente comando ti mostrerà se una qualsiasi delle shell elencate sono in effetti collegamenti simbolici e, in tal caso, dove si collegano a: ls -l / bin

  • Ora per la domanda "Come cambio la shell utilizzata dal mio account?" Supponendo che questo significhi "Come posso cambiare in modo permanente la shell di default che un terminale userà", c'è una risposta al link
risposta data 07.11.2018 - 12:54

Leggi altre domande sui tag