Qual è la differenza tra login/non-login e interactive/non-interactive shells?
Spesso su Linux si parla di queste quattro tipologie di shell. In realtà la shell è sempre la stessa, cambia solo il modo in cui viene eseguito un processo nella shell.
Proviamo a vedere le differenze tra le quattro modalità:
- login shell: La login shell ti consente di accedere al sistema come utente specifico. Per questo è necessario un nome utente e una password. Quando premi ctrl+alt+F1 per accedere a un terminale virtuale, a seguito dell’avvenuto accesso, avrai una login shell (interattiva). A seguito del login, verranno letti ed eseguiti in sequenza questi file:
/etc/profile
e~/.profile
per una Bourne (o compatibile) shell (e poi/etc/profile.d/*
)~/.bash_profile
per bash/etc/zprofile
e~/.zprofile
per zsh/etc/csh.login
e~/.login
per csh
- non-login shell: Una shell che viene eseguita senza effettuare il login e per questo è necessario un utente attualmente loggato. Ad esempio abbiamo una non-login shell (interattiva) quando apri un terminale grafico in un ambiente grafico (gnome, kde). File letti ed eseguiti:
/etc/bashrc
e~/.bashrc
per bash
- interactive shell: Una shell (login o non-login) in cui è possibile digitare o interrompere interattivamente i comandi, ad esempio un terminale gnome (non login) o un terminale virtuale (login). In una shell interattiva deve essere impostata la variabile prompt ($PS1). I file letti ed eseguiti al login:
/etc/profile
e~/.profile
/etc/bashrc
o/etc/bash.bashrc
per bash
- non-interactive shell: Una (sotto)shell che solitamente viene eseguita da un processo automatizzato. Non vedrai né input né output se il processo chiamante non lo gestisce. Parliamo quindi di una shell normalmente senza login, perché l’utente chiamante ha già effettuato il login. Ad esempio una shell che esegue uno script è sempre una shell non interattiva, ma lo script può emulare una shell interattiva richiedendo all’utente di inserire valori. I file letti es eseguiti al login:
/etc/bashrc
o/etc/bash.bashrc
per bash (vedrai questo all’inizio dello script:[ -z "$PS1" ] && return
. Ciò significa che non devi fare nulla se si tratta di una shell non interattiva).- a seconta della tipologia di shell può essere letto il contenuto della variabile
$ENV
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta