Il shell, o interfaccia a riga di comando, è un componente cruciale del sistema operativo Linux, fornendo agli utenti un modo potente per interagire con il sistema.
Ogni utente su un sistema Linux è associato a un shell predefinito, che determina l’interprete dei comandi che utilizzano durante l’interazione con il sistema.
Cambiare il shell predefinito di un utente può essere necessario per vari motivi, come preferenze personali o la necessità di specifiche funzionalità offerte da un shell diverso.
In questo articolo, esploreremo il processo di cambiamento del shell predefinito di un utente in Linux. Il shell è un programma che accetta ed interpreta comandi; ci sono diversi shell open-source come bash, sh, ksh, zsh, fish, e molti altri shell meno conosciuti disponibili su Linux.
Shell Bash di Linux
Bash (/bin/bash) è un shell popolare sulla maggior parte, se non su tutte le distribuzioni Linux, ed è normalmente il shell predefinito per gli account utente.
Ci sono diversi motivi per cambiare il shell di un utente in Linux, tra cui i seguenti:
- Per bloccare o disabilitare gli accessi utente normali in Linux utilizzando una shell nologin.
- Usa uno script wrapper shell o un programma per registrare i comandi dell’utente prima che vengano inviati a una shell per l’esecuzione. Qui, specifica lo script wrapper shell come shell di accesso dell’utente.
- Per soddisfare le esigenze dell’utente (vuole utilizzare una shell specifica), specialmente quelli con privilegi amministrativi.
Quando si creano account utente con gli utilità useradd o adduser, il flag --shell
può essere utilizzato per specificare il nome di una shell di accesso dell’utente diversa da quella specificata nei rispettivi file di configurazione.
A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.
Elencare le Shell Disponibili in un Sistema Linux
In Linux, il file /etc/shells viene comunemente utilizzato per memorizzare un elenco delle shell di accesso valide installate nel sistema. Questo file aiuta nell’identificare quali shell sono disponibili per gli utenti da impostare come loro shell predefinita utilizzando comandi come chsh.
Per visualizzare l’elenco delle shell disponibili su un sistema Linux, è possibile utilizzare il seguente comando:
cat /etc/shells
Output di Esempio:
# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/tmux /usr/bin/screen
Prima di procedere oltre, nota che:
- A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
- Solo root può eseguire una shell non elencata nel file /etc/shells.
- Se un account ha una shell di accesso limitata, allora solo il root può cambiare la shell di quell’utente.
Trova la Shell Attuale in Linux
Prima di modificare lo shell predefinito di un utente, è importante determinare lo shell corrente eseguendo il seguente comando echo, che visualizza lo shell corrente per l’utente connesso.
echo $SHELL /bin/bash
L’output mostra che l’utente sta attualmente utilizzando lo shell Bash (/bin/bash).
Modifica dello Shell Predefinito in Linux
Ora discutiamo tre modi diversi per modificare lo shell predefinito dell’utente Linux.
1. Utility usermod
Il comando usermod viene utilizzato per modificare i dettagli dell’account dell’utente, memorizzati nel file /etc/passwd e l’opzione -s
o --shell
viene utilizzata per modificare lo shell di login dell’utente.
In questo esempio, controlliamo prima le informazioni sull’account dell’utente tecmint per visualizzare il suo shell di login predefinito e poi cambiamo il suo shell di login da /bin/sh a /bin/bash come segue.
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd

Ora lo shell predefinito per l’utente “tecmint” sarà cambiato in bash.
2. Utility chsh
Il comando chsh viene utilizzato per modificare in modo interattivo lo shell di login predefinito dell’utente utilizzando l’opzione -s
o –shell come mostrato.
grep tecmint /etc/passwd sudo chsh --shell /bin/sh tecmint grep tecmint /etc/passwd

Sostituisci “/bin/sh” con il percorso effettivo dello shell che desideri impostare. Ad esempio, per impostare lo shell su sh, useresti ““/bin/sh“.
È importante notare che le modifiche allo shell predefinito di solito entrano in vigore al prossimo accesso.
I due metodi sopra modificano tutti lo shell specificato nel file /etc/passwd che puoi modificare manualmente come nel terzo metodo di seguito.
3. Cambia lo Shell dell’Utente in /etc/passwd File
In questo metodo, apri semplicemente il file /etc/passwd utilizzando uno dei tuoi editor di testo da riga di comando preferiti e modifica lo shell di un utente specifico.
sudo vi /etc/passwd OR sudo nano /etc/passwd

Trova la riga corrispondente all’utente per il quale desideri modificare lo shell predefinito. Ad esempio, se la riga appare così:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
L’ultima campo, /bin/bash, rappresenta lo shell predefinito (in questo caso, Bash).
Per cambiare il valore del campo dello shell con lo shell desiderato, specifica semplicemente il percorso di uno shell (/bin/zsh) come mostrato.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
Quando hai finito di modificare, salva e chiudi il file.
Come Installare un Altro Shell?
Similmente ad altri pacchetti software, shell popolari come Zsh e Fish possono essere facilmente installati dalla repository della tua distribuzione come mostrato.
Installa Zsh Shell in Linux
Per installare Zsh su Linux, usa il seguente comando appropriato per la tua specifica distribuzione Linux.
sudo apt install zsh [On Debian, Ubuntu and Mint] sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [On Gentoo Linux] sudo apk add zsh [On Alpine Linux] sudo pacman -S zsh [On Arch Linux] sudo zypper install zsh [On OpenSUSE]
Installa Fish Shell in Linux
Per installare Zsh su Linux, utilizza il comando appropriato per la tua specifica distribuzione Linux.
sudo apt install fish [On Debian, Ubuntu and Mint] sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [On Gentoo Linux] sudo apk add fish [On Alpine Linux] sudo pacman -S fish [On Arch Linux] sudo zypper install fish [On OpenSUSE]
Non dimenticare di leggere questi argomenti correlati:
In questo articolo, abbiamo descritto vari modi per cambiare lo shell di un utente in Linux. Per condividere eventuali pensieri con noi, utilizza la sezione dei commenti qui sotto.
Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/