Visualizzazione post con etichetta shell. Mostra tutti i post
Visualizzazione post con etichetta shell. Mostra tutti i post

martedì 18 aprile 2023

Linux: Verificare la shell utilizzata

Linux e Unix mettono a disposizione dell'utente diverse shell. Nelle varie distribuzioni si possono trovare shell come bash (Bourne Again shell), ksh (Korn shell), csh (C shell), tcsh (TC shell), sh (Bourne shell), zsh (Z shell) e altre installate di default. Come facciamo a scoprire quale shell stiamo utilizzando su Linux?
L'utilizzo della variabile $SHELL, in questo caso, non è così affidabile infatti i comandi
echo "$SHELL"
oppure
printf "La mia shell - %s\n" "$SHELL"
visualizzano la shell dell'utente corrente ma non necessariamente quella in esecuzione al momento.
Come visibile in FIG 1, la shell di default di Kali Linux è zsh.
Default Shell
FIG 1 - Default Shell
Per passare, temporaneamente, ad un altra shell in genere basta digitarne il nome all'interno del terminare e premere invio. Ad esempio per passare alla shell bash basterà eseguire il comando
bash
Se, dopo aver modificato la shell, eseguiamo nuovamente il comando per la visualizzazione della variabile $SHELL, noteremo che in output verrà mostrata sempre la shell di default FIG 2. 
Modifica shell attuale
FIG 2 - Modifica shell attuale

Per uscire dalla nuova shell avviata basterà digitare il comando
exit
oppure aprire una nuova finestra terminale (la nuova finestra verrà aperta sulla shell di default).

Di seguito verranno mostrati alcuni metodi per individuare la shell in esecuzione.

Metodo 1
Un vecchio trucco in ambiente Unix per individuare la shell che si sta usando prevede l'utilizzo del comando ps con l'opzione -p {pid}. Il seguente comando permette di scoprire in quale shell ci si trova.
ps -p $$
Il comando seleziona i processi il cui numero ID (PID o numero di identificazione del processo) viene passato all'opzione -p. L'argomento $$ passato all'opzione -p restituisce il PID  del processo corrente. Dato che il processo corrente, all'interno di una finestra terminale, è la shell in esecuzione, il comando visualizzerà un elenco dello stato del processo della shell. In questo elenco, nella colonna CMD, verrà visualizzato il nome della shell in esecuzione al momento.
ps, Shell corrente
FIG 3 - ps, Shell corrente

Metodo 2
Un altro metodo semplice e affidabile per ottenere il nome dell'interprete di shell corrente su Linux o sistemi Unix-like prevede l'utilizzo del parametro speciale della shell $0:
echo $0
oppure
printf "%s\n" $0

$0 è il nome del processo in esecuzione. Se lo si usa all'interno di una shell, restituirà il nome della shell in caso contrario, se lo si usa all'interno di uno script, restituirà il nome dello script.
Visualizzazione shell corrente tramite $0
FIG 4 - Visualizzazione shell corrente tramite $0

Metodo 3
Un altro metodo per ottenere il nome della shell corrente in modo affidabile sui sistemi operativi Linux è attraverso il seguente comando.
readlink /proc/$$/exe
readlink viene utilizzato per stampare i collegamenti simbolici risolti nella shell attuale. Come visto per il Metodo 1, $$ indica il PID del processo corrente (shell) pertanto readlink restituirà il collegamento alla shell in esecuzione
Visualizzazione shell corrente tramite readlink
FIG 5 - Visualizzazione shell corrente tramite readlink

Verificare quali shell sono installate

Il file /etc/shells è un file di testo che contiene i nomi completi delle shell di accesso valide. Per visualizzare quali e quante shell sono installate sulla propria Linux o Unix box, eseguire da terminale il comando
cat /etc/shells

Il file /etc/shells può essere modificato solo da root
sudo vi /etc/shells
/etc/shells
FIG 6 - /etc/shells 

Stampare il nome della shell predefinita

La shell predefinita è quella che viene eseguita quando si apre una finestra di terminale ed è definita nel file /etc/passwd. Per stampare a video la shell predefinita, oltre all'utilizzo della variabile $SHELL visto in precedenza, è possibile utilizzare il seguente comando grep:
grep "^$USER" /etc/passwd
oppure
awk -F: '/kali/ { print $7}' /etc/passwd
dove al posto di kali va specificato l'utente corrente.
Shell predefinita
FIG 7 - Shell predefinita

Modificare la shell predefinita per l'account corrente

Per modificare la shell predefinita per l'account corrente, è possibile utilizzare chsh come mostrato di seguito
chsh -s /usr/bin/zsh

In questo caso il comando imposta come shell predefinita quella specificata dall'opzione -s e che risulta presente nel file /etc/shells.





venerdì 4 febbraio 2022

Linux: Divertirsi con la shell bash (3)

Da terminare incollare ed eseguire il seguente codice per visualizzare caratteri casuali che scorrono dall'alto verso il basso stile Matrix.

while :;do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(printf "\U$(($RANDOM % 500))");sleep 0.05;done|gawk '{a[$3]=0;for (x in a){o=a[x];a[x]=a[x]+1;printf "\033[%s;%sH\033[2;32m%s",o,x,$4;printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,$4;if (a[x] >= $1){a[x]=0;} }}'


Matrix
FIG 1 - Matrix




giovedì 19 novembre 2020

Linux: Divertirsi con la shell bash (2)

Per poter funzionare, il comando mostrato in questo articolo deve essere eseguito in un emulatore di terminale che permette la visualizzazione dei colori a 24bit, inoltre deve essere installato bc.

In Kali Linux è possibile procedere come indicato di seguito:
  • Avviare la finestra terminale;
  • Procedere all'installazione di bc eseguendo il comando 
    sudo apt-get install bc

    Kali Linux - Installazione bc
    FIG 1 - Kali Linux, Installazione bc

  • Eseguire il seguente comando per visualizzare un piacevole effetto di colori all'interno della finestra terminale 
    p=3.14;for i in $( seq 0 0.04 100 );do r=$( printf "128+127*s($i)\n" |bc -l |cut -d. -f1) g=$( printf "128+127*s($i+$p*(1/3))\n" |bc -l |cut -d. -f1 ) b=$( printf "128+127*s($i+$p*(2/3))\n" |bc -l |cut -d. -f1 ); printf "\e[48;2;$r;$g;${b}m\n"; sleep 0.015; done

    Kali Linux - Effetto colori
    FIG 2 - Kali Linux, Effetto colori





mercoledì 15 luglio 2020

Kali Linux: Installare una nuova shell e impostarla come predefinita

La shell, conosciuta anche come terminale, è un componente fondamentale del sistema operativo. Si tratta di uno strato software che si interpone tra il sistema operativo e l'utente consentendo l'esecuzione dei comandi, programmi, script e molto altro.
Generalmente la shell più diffusa in ambiente Linux è Bash che, con la sua dotazione di funzioni e stabilità, si è imposta come standard di fatto. Ciò non significa che tale shell vada bene in tutte le situazioni. In alcuni casi potrebbe essere necessario utilizzare shell meno "pesanti" come dash (utilizzata nei sistemi Debian) che offre gran parte delle stesse funzioni di Bash ma richiede meno risorse. 

Per visualizzare la shell attualmente in uso basta eseguire il seguente comando dalla finestra terminale
ps -p $$
Kali Linux, Shell in uso
FIG 1 - Kali Linux, Shell in uso

Per visualizzare le shell disponibili all'interno del sistema eseguire
cat /etc/shells
Kali Linux - Shell disponibili
FIG 2 - Kali Linux, Shell disponibili

Per installare una nuova shell aggiornata all'interno del sistema, come ad es. la shell dash, eseguire i comandi
sudo apt update 
sudo apt install dash
Kali Linux - Installazione shell dash
FIG 3 - Kali Linux, Installazione shell dash

Terminata l'installazione si può avviare la nuova shell digitandone il nome
dash

Per impostare la nuova shell come quella di default bisogna utilizzare il comando chsh. Ad es. per impostare la shell dash come shell predefinita il comando da eseguire è
chsh -s /usr/bin/dash

La modifica sarà attiva dal successivo logon dell'utente.

Kali Linux - Shell dash
FIG 4 - Kali Linux, Shell dash






mercoledì 18 settembre 2019

Linux: Divertirsi con la shell bash

Avviare la finestra terminale, incollare ed eseguire il seguente codice per vedere il cursore rimbalzare nella finestra e scrivere il manuale bash.

man bash | sed 's/./&\n/g' | awk -v mx=$COLUMNS -v my=$LINES 'BEGIN{x=y=e=f=1}{if(x==mx||!x){e*=-1};if(y==my||!y){f*=-1};x+=e;y+=f;printf "\033[%s;%sH%s",y,x,$1;for (a=0;a<400000;a++){}}' 


Linux, divertirsi con la shell bash
FIG 1 - Linux, divertirsi con la shell bash




martedì 15 novembre 2016

Windows 10: Abilitare la shell Bash su Windows 10 Anniversary Update

Una delle novità introdotte (in maniera definitiva) in Windows 10 Anniversary Update è la shell Bash caposaldo di molte distribuzioni Linux. Questa nuova funzione sarà prevalentemente apprezzata dagli utenti più evoluti che utilizzano anche l'ambienta Unix/Linux.

La shell Bash è stata inserita in Windows 10 come componente opzionale e non è attiva di default; per abilitarla:
  • Accedere alla finestra Programmi e funzionalità (WIN+R e digitare Appwiz.cpl seguito da invio);
    Esegui, Appwiz.cpl
    FIG 1 - Esegui, Appwiz.cpl
  • Nella finestra Programmi e funzionalità cliccare sul link Attivazione o disattivazione delle funzionalità di Windows presente sul lato sinistro;
    Windows 10, Attivazione o disattivazione delle funzionalità Windows
    FIG 2 - Windows 10, Attivazione o disattivazione delle funzionalità Windows
  • Nella finestra Funzionalità Windows, spuntare la voce Sottosistema Windows per Linux e confermare cliccando su OK;
    Windows 10, Sottosistema Windows per Linux
    FIG 3 - Windows 10, Sottosistema Windows per Linux
  • Verrà richiesto di riavviare il sistema. Cliccare su Riavvia ora per procedere con il riavvio.

Prima di poter completare l'installazione della shell Bash è necessario abilitare la Modalità sviluppatore:
  • Dal menu Start selezionare Impostazioni e cliccare su Aggiornamento e sicurezza;
    Windows 10, Impostazioni - Aggiornamento e sicurezza
    FIG 4 - Windows 10, Impostazioni - Aggiornamento e sicurezza
  • Cliccare sul link Per sviluppatori presente sul lato sinistro della finestra, quindi, sul lato destro, abilitare la voce Modalità sviluppatore;
    Windows 10, Modalità sviluppatore
    FIG 5 - Windows 10, Modalità sviluppatore
  • Alla richiesta di conferma relativa all'attivazione cliccare su Si.
    Windows 10, Conferma attivazione modalità sviluppatore
    FIG 6 - Windows 10, Conferma attivazione modalità sviluppatore

Una volta abilitata la modalità sviluppatore si procede all'installazione di Ubuntu on Windows:
  • Avviare il prompt dei comandi (WIN+R e digitare cmd seguito da invio);
  • Digitare ed eseguire il comando Bash;
  • Al primo avvio verrà chiesto di installare Ubuntu on Windows. Confermare digitando S seguito da invio. Verrà avviato il download dei componenti dal Windows store.
    Windows 10, installazione Ubuntu on Windows
    FIG 7 - Windows 10, installazione Ubuntu on Windows
  • Al termine del download verrà richiesto di inserire un nuovo nome utente UNIX (ad es. possiamo inserire root).
    Windows 10, Nuovo nome utente Unix
    FIG 8 - Windows 10, Nuovo nome utente Unix

A questo punto possiamo utilizzare i classici comandi della shell Unix/Linux come ls, cp, rm e anche utilizzare una versione specifica del package manager Apt.

Dalla shell Bash possiamo lanciare i seguenti 2 comandi per aggiornare tutti i pacchetti installati alle versioni più recenti
sudo apt-get update
sudo apt-get upgrade

Aggiornare i pacchetti con apt-get update e apt-get upgrade
FIG 9 - Aggiornare i pacchetti con apt-get update e apt-get upgrade

La shell Bash consente di creare script che possono essere avviati anche dal Prompt dei comandi utilizzando il comando
bash -c "/path/to/script.sh"