Come modificare la shell predefinita su Linux con chsh

Pubblicato: 2022-01-29
Un prompt della shell stilizzato su un sistema laptop Linux in stile Ubuntu.
Fatmawati Achmad Zaenuri/Shutterstock

Bash non è l'unica shell di Linux. È facile provare altre shell, come Zsh, che è molto popolare. Quando ne hai trovato uno che ti piace, usa il comando chsh per renderlo la tua shell predefinita. Ti mostreremo come.

Perché una shell è importante

La shell si trova tra te e il sistema operativo. Fornisce l'ambiente all'interno di una finestra del terminale che consente di digitare comandi ed eseguire programmi. La shell controlla il tuo input e capisce cosa vuoi. Se può eseguire la tua offerta da solo, lo fa. Se ha bisogno di un aiuto esterno, cerca il percorso e trova i programmi che possono fare tutto ciò che hai richiesto.

Ci sono molte shell differenti disponibili su Linux. Tutti consentono di eseguire le stesse attività principali: esplorare il file system, lavorare con i file, avviare programmi ed eseguire script. Tuttavia, ciascuno esegue questi compiti a modo suo e ha le proprie caratteristiche e idiosincrasie speciali.

Le conchiglie tendono ad essere progettate da persone che vogliono che le cose si comportino in un modo specifico. Se il tuo pensiero è in linea con quello di quel designer, quel guscio potrebbe benissimo essere adatto a te. Inoltre, provare una nuova shell su Linux è facile.

Nella maggior parte delle distribuzioni Linux, incluso Ubuntu, la shell predefinita è bash . Fa un ottimo lavoro ed è molto capace. Tuttavia, un'altra shell potrebbe offrire una differenza di risparmio di tempo che avrebbe un grande impatto sul flusso di lavoro. Non lo saprai mai se non guardi!

CORRELATI: Cos'è ZSH e perché dovresti usarlo invece di Bash?

Un secchio di conchiglie

Abbiamo già trattato le diverse shell Linux, ma ecco una rapida introduzione alle più comuni:

  • bash: La shell Bourne again è l'impostazione predefinita in molte distribuzioni.
  • rbash: questa shell bash con restrizioni fornisce funzionalità minime alla persona o allo script in esecuzione al suo interno.
  • ash: The Almquist shell è una versione più leggera di bash.
  • dash: Debian Alquist Shell è lo script di shell predefinito in Ubuntu. Mentre bash è il login predefinito e la shell interattiva, dash viene utilizzato per eseguire processi di sistema perché è molto più leggero di bash .
  • zsh: La shell Z è una versione moderna della famiglia di shell bash . Offre miglioramenti netti, come i controlli ortografici dei comandi e le correzioni suggerite.
  • fish: questa amichevole shell interattiva è stata scritta da zero e non deriva da nessuna delle altre famiglie di shell. È pensato per essere facile da usare. Tra i suoi molti altri vantaggi, fish offre suggerimenti per i comandi basati sulla cronologia e sul contenuto della cartella corrente, simili al testo predittivo.
  • ksh: KornShell fornisce un linguaggio di scripting particolarmente forte.

CORRELATI: Qual è la differenza tra Bash, Zsh e altre shell Linux?

Elenca le shell installate

Per vedere quali shell sono installate sul tuo computer, usa questo comando. Elenca semplicemente il contenuto del /etc/shells :

 gatto /etc/shells 

Abbiamo menzionato bash , dash e rbash , ma cos'è sh ?

sh è la shell Thompson, scritta nel lontano 1971 da Ken Thompson, famoso per i Bell Labs. Non è più mantenuto ed è stato da tempo soppiantato dalle moderne conchiglie. È incluso esclusivamente per mantenere la compatibilità con gli script precedenti che hanno ancora quanto segue come prima riga:

 #!/bin/sh

Questo indica al sistema di utilizzare la shell sh per eseguire lo script. Hai davvero quella shell antica sulla tua macchina e viene utilizzata per eseguire i tuoi script? Il comando which ci dirà quale programma viene effettivamente eseguito quando si digita un comando.

Vediamo cosa viene eseguito quando digiti sh :

 quale sh

Questo sembra trovare un binario. se scaviamo un po' più a fondo, però, vedremo che è un collegamento simbolico che in realtà punta a dash , la shell leggera usata per eseguire gli script:

 ls -l /bin/sh 

Questo è un modo semplice e pulito per fornire una rete di sicurezza per gli script che si aspettano di trovare sh sui sistemi moderni.

Installazione di un'altra shell

Installiamo il guscio di fish e lo impostiamo come predefinito per dave . Su Ubuntu, digitiamo il seguente comando:

 sudo apt-get install fish 

Su Manjaro, usa pacman :

 sudo pacman -Sy fish 

Su Fedora, digita quanto segue:

 sudo dnf installa pesce 

Annuncio pubblicitario

Quando l'installazione è completa, puoi controllare ancora una volta le shell installate:

 gatto /etc/shells 

La nostra nuova shell appare come /usr/bin/fish . Prendi nota di quel percorso: ne avrai bisogno a breve.

La variabile d'ambiente $SHELL

La variabile d'ambiente $SHELL contiene il nome della tua shell corrente. Possiamo controllare su quale è impostato con echo :

 eco $SHELL

Iniziamo il guscio di fish :

 pesce

Ora, controlliamo di nuovo cosa dice la variabile d'ambiente $SHELL :

 eco $SHELL 

La prima volta che usiamo echo $SHELL , siamo nella shell bash . La variabile di ambiente contiene il percorso dell'eseguibile bash , /bin/bash .

Annuncio pubblicitario

Quando lanciamo il guscio di fish , riceviamo un messaggio di benvenuto amichevole e il prompt dei comandi cambia. Ciò che potrebbe sorprendere è che l'ambiente $SHELL mantiene ancora il percorso dell'eseguibile bash , /bin/bash . Va bene, è normale.

Quando avvii una nuova shell (o qualsiasi altro programma), eredita l'ambiente della shell madre. Quindi, il guscio di fish eredita le variabili d'ambiente globali ed esportate dal guscio di bash . Poiché il valore nella variabile di ambiente $SHELL non è stato modificato, ha lo stesso valore nel guscio del fish che aveva nel guscio bash .

Stiamo eseguendo fish come qualsiasi altro programma. Possiamo anche usare l' exit per uscire dal guscio del fish . Si chiude come qualsiasi altro programma e torniamo alla shell bash .

È fantastico per provare nuove shell, vedere cosa possono fare e se vai d'accordo con loro. Puoi esplorare prima di fare il salto e adottarne uno come tuo guscio di riferimento.

Se decidi di impostare fish o qualsiasi altra conchiglia, come predefinito, dovrai usare il comando chsh .

Il comando chsh

Il comando chsh ti permette di cambiare la tua shell predefinita. Il trucco è essere consapevoli del fatto che ti consente di modificare sia l'accesso predefinito che le shell interattive predefinite. Potresti voler cambiare l'uno o l'altro, o entrambi.

Annuncio pubblicitario

Ogni volta che accedi per ottenere un prompt dei comandi, usi la shell configurata come shell di accesso. Quando hai già effettuato l'accesso e apri una finestra di terminale, usi la shell configurata per essere la tua shell interattiva. Questi possono essere gli stessi gusci o diversi.

Per impostare la tua shell di accesso, usa chsh senza parametri:

 chsh 

Ti viene richiesta la password. Quindi, devi digitare il percorso della nuova shell e premere Invio.

Se effettuiamo una connessione remota a questo computer di prova da un altro, ci ritroveremo nel guscio di fish una volta effettuato l'accesso.

Per cambiare la tua shell interattiva usa chsh con l'opzione -s (shell). Passa il percorso alla nuova shell sulla riga di comando:

 chsh -s /usr/bin/pesce 

Ti viene richiesta la password e torna al prompt dei comandi della tua shell corrente. È necessario disconnettersi e riconnettersi affinché la modifica abbia effetto. Quando lo fai, vedrai il saluto e il prompt dei comandi del guscio di fish .

Annuncio pubblicitario

La variabile d'ambiente $SHELL ora contiene il percorso della nuova shell predefinita:

 eco $SHELL 

Modifica della shell di un altro account utente

Se hai i privilegi di root e puoi usare sudo , puoi cambiare le shell di altri account utente. Il comando è lo stesso di prima, con l'aggiunta del nome utente di quella persona aggiunto alla riga di comando:

 sudo chsh -s /usr/bin/fish mary 

Quando mary farà il login, vedrà la nuova shell quando aprirà una finestra di terminale.

Ognuno ha un preferito

Finché sei a tuo agio con la tua scelta di shell e funziona per te, è fantastico! Ricorda solo che deve essere in grado di eseguire script comuni, come le routine di installazione. Per le shell menzionate qui, questo non dovrebbe essere un problema.

Naturalmente, puoi anche scaricare e installare una nuova shell e portarla a fare un giro di prova senza apportare modifiche alla configurazione del tuo computer. Quando sei pronto per sposarti, chsh eseguirà la cerimonia per te.

CORRELATI: I migliori laptop Linux per sviluppatori e appassionati