Ricerca nel sito web

Come modificare la shell utente predefinita in Linux


La shell, o interfaccia della riga di comando, è un componente cruciale del sistema operativo Linux, poiché fornisce agli utenti un modo potente per interagire con il sistema.

Ogni utente su un sistema Linux è associato a una shell predefinita, che determina l'interprete dei comandi che utilizza quando interagisce con il sistema.

La modifica della shell predefinita di un utente può essere necessaria per vari motivi, come le preferenze personali o la necessità di funzionalità specifiche offerte da una shell diversa.

In questo articolo esploreremo il processo di modifica della shell predefinita di un utente in Linux. La shell è un programma che accetta e interpreta i comandi; esistono diverse shell open source come bash, sh, ksh, zsh, fish, e molte altre shell meno conosciute disponibili su Linux.

Shell Bash di Linux

Bash (/bin/bash) è una shell popolare nella maggior parte se non in tutte le distribuzioni Linux ed è normalmente la shell predefinita per gli account utente.

Esistono diversi motivi per modificare la shell di un utente in Linux, inclusi i seguenti:

  • Per bloccare o disabilitare i normali accessi utente in Linux utilizzando una shell nologin.
  • Utilizzare uno script o un programma wrapper della shell per registrare i comandi dell'utente prima che vengano inviati a una shell per l'esecuzione. Qui, specifichi lo shell wrapper come shell di accesso dell'utente.
  • Per soddisfare le richieste di un utente (vuole utilizzare una shell specifica), in particolare quelli con diritti amministrativi.

Quando si creano account utente con le utilità useradd o adduser, il flag --shell può essere utilizzato per specificare il nome della shell di login di un utente diverso da quello specificato nei rispettivi file di configurazione.

È possibile accedere a una shell di accesso da un'interfaccia basata su testo o tramite un SSH da una macchina Linux remota. Tuttavia, se accedi tramite un'interfaccia utente grafica (GUI), puoi accedere alla shell da emulatori di terminale come xterm, konsole e molti altri.

Elenca le shell disponibili su un sistema Linux

In Linux, il file /etc/shells viene comunemente utilizzato per memorizzare un elenco di shell di accesso valide installate sul sistema. Questo file aiuta a identificare quali shell sono disponibili per gli utenti da impostare come 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

Esempio di output:

/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, tieni presente che:

  • Un utente può cambiare la propria shell con qualsiasi cosa: la quale, però, deve essere elencata nel file /etc/shells.
  • Solo root può eseguire una shell non elencata nel file /etc/shells.
  • Se un account ha una shell di accesso limitata, solo il root può modificare la shell di quell'utente.

Trova la shell corrente in Linux

Prima di modificare la shell di un utente predefinito, è importante determinare la shell corrente eseguendo il seguente comando echo, che visualizza la shell corrente per l'utente che ha effettuato l'accesso.

echo $SHELL

/bin/bash

L'output mostra che l'utente sta attualmente utilizzando la shell Bash (/bin/bash).

Modifica della shell predefinita in Linux

Ora discutiamo tre diversi modi per modificare la shell utente Linux predefinita.

1. Utilità usermod

Il comando usermod viene utilizzato per modificare i dettagli dell'account di un utente, memorizzati nel file /etc/passwd e nell'opzione -s o --shell viene utilizzato per modificare la shell di accesso dell'utente.

In questo esempio, controlleremo prima le informazioni sull'account dell'utente tecmint per visualizzare la sua shell di accesso predefinita e poi modificheremo la sua shell di accesso da /bin/sh a /bin/bash come segue.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

Ora la shell predefinita per l'utente "tecmint" verrà modificata in bash.

2. Utilità chsh

Il comando chsh viene utilizzato per modificare in modo interattivo la shell di accesso predefinita 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 della shell che desideri impostare. Ad esempio, per impostare la shell su sh, dovresti utilizzare "/bin/sh".

È importante notare che le modifiche alla shell predefinita di solito hanno effetto al tuo prossimo accesso.

I due metodi soprattutto modificano la shell specificata nel file /etc/passwd che puoi modificare manualmente come nel terzo metodo di seguito.

3. Modificare la shell utente nel file /etc/passwd

Con questo metodo, apri semplicemente il file /etc/passwd utilizzando uno dei tuoi editor di testo da riga di comando preferiti e modifica la shell di un utente specifico.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

Individua la riga corrispondente all'utente per il quale desideri modificare la shell predefinita. Ad esempio, se la riga è simile a questa:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

L'ultimo campo, /bin/bash, rappresenta la shell predefinita (in questo caso, Bash).

Per modificare il valore del campo shell nella shell desiderata, specifica semplicemente il percorso di una shell (/bin/zsh) come mostrato.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Una volta terminata la modifica, salva e chiudi il file.

Come installare un'altra shell?

Similmente ad altri pacchetti software, shell popolari come Zsh e Fish possono essere facilmente installate dal repository della tua distribuzione come mostrato.

Installa Zsh Shell su Linux

Per installare Zsh su Linux, utilizza 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 su Linux

Per installare Zsh su Linux, utilizza il seguente 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 modificare la shell di un utente in Linux. Per condividere qualsiasi pensiero con noi, utilizza la sezione commenti qui sotto.