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.
FIG 1 - Default Shell |
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.
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.
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.
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
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
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.
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.
Nessun commento:
Posta un commento
I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.