Come modificare la shell predefinita su Linux con chsh
Pubblicato: 2022-01-29 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 dibash
. - 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
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
.
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.
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
.
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.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati