Cambiare shell

In generale esistono molti tipi di shell, che si dividono principalmente in testuali e grafiche: quando si parla semplicemente di “shell”, o anche di “terminale”, si intende di solito una shell testuale con cui l’utente interagisce attraverso un terminale o un terminale virtuale (quest’ultimo può anche far parte della shell stessa anziché essere un programma a parte) tramite un’interfaccia a riga di comando; nel caso di shell grafiche è comune fare riferimento ai cosiddetti desktop environment, che forniscono agli utilizzatori un ambiente grafico da cui è possibile gestire file e avviare programmi.
Quando diamo dei comandi li diamo tramite una shell
La shell pertanto mi permette di eseguire i comandi e di avere un ambiente con delle variabili.Le moderne shell testuali posseggono diverse funzionalità ergonomiche, tra le quali:

-la cronologia dei comandi eseguiti (o command history), che permette di ripetere gli ultimi comandi digitati;
-il completamento dei comandi (o command-line completion), che permette di completare automaticamente nomi di programmi e di file
-il job control, che permette di avviare in background più programmi o di sospenderli temporaneamente.

Le shell testuali dei sistemi integrano un linguaggio di scripting con il quale è possibile scrivere veri e propri programmi che possono ad esempio automatizzare le operazioni di amministrazione di sistema, semplificandola. La sintassi di tale linguaggio è un’estensione di quella usata interattivamente, per cui chi è familiare con l’uso interattivo della shell trova facile e naturale creare degli script.

C’e’ una variabile che puo’ essere stampata a video ed ‘ e’ $

[[email protected]]$ echo $SHELL
/bin/bash
[[email protected]]$

Questa variabile contiene per l’utente che esegue, il contenuto /bin/bash/
Viene pertanto detto quale e’ la shell di default e cioe’ /bin/bash
Questa e’ una variabile e viene inizializzata ad ogni avvio di sistema

 

Ora digitiamo
[[email protected]] $ grep morro /etc/passwd
morro:x:1000:1000:morro:/home/morro: /bin//bash
[morro[email protected]]$

In questa analisi si evince che l’utente fa uso della shell /bin//bash

Posso pero’ cambiare per il mio utente quella che e’ la mia shell di default
digitando ad esempio ksh ( kornshell) oppure sh ( un altro tipo di shell)
[[email protected]]$ sh
sh-4.35

E questo pero’ bisognera’ farlo manualmente, ad ogni avvio di terminale, non e’ persistente.
Digitando
[[email protected]]$ sh
sh-4.35
exit
[[email protected]] $
Digitando exit si ritorna in bash shell.

Possiamo visualizzare un elenco delle shell disponibili, su cui cambiare.

[[email protected]]$ chsh -l
Il comando chsh (change shell) che si trova nei sistemi operativi Unix e Unix-like permette di modificare la shell di login, ovvero la shell predefinita che si presenta all’utente al momento dell’accesso al sistema. Le shell valide utilizzabili sono elencate generalmente nel file /etc/shells

/bin/sh/
/bin/bash/
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/bin/rbash
/usr/bin/nologin
/bin/ksh
/user/bin/ksh

E questo e’ l’elenco delle shell a disposizione.
Poniamo ora il caso che si voglia definitivamente stabilire quale sara’ la mia shell di default:

[[email protected]]$ chsh -s /usr/bin/ksh
Modifica shell per morro in corso
Password:*********
Shell modificata
Posso ora simulare un login
[[email protected]]$ su -l morro
Password:********
ksh
Abbiamo cambiato la shell

Questa lista:
/bin/sh/
/bin/bash/
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/bin/rbash
/usr/bin/nologin
/bin/ksh
/user/bin/ksh
Fa parte di un file di configurazione, modificabile solo da root e quindi:

[[email protected] morro]# vi /etc/shells

/bin/sh/
/bin/bash/
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/bin/rbash
/usr/bin/nologin
/bin/ksh
/user/bin/ksh
“/etc/shells” 9L, 113C

Dove noi potremo opportunamente cancellare o modificare le shells presenti, al riavvio e tornando in shell avremo quindi:

[[email protected]]$ chsh -l
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/bin/rbash
/usr/bin/nologin
/bin/ksh

Avendo ora cancellato /user/bin/ksh.

Il comando per determinare il cambio di shell e’ quindi: chsh