GNU/Linux >> Linux Esercitazione >  >> Linux

Che cos'è Login Shell in Linux?

La shell di accesso è il primo processo che viene eseguito con il tuo ID utente quando accedi a una sessione interattiva.

Può sembrare semplice in superficie, ma se scavi in ​​profondità, potrebbe creare un po' di confusione. Per capire, vediamo rivisitare il processo di accesso nei sistemi Linux.

Linux è un sistema multiutente in cui più utenti possono accedere e utilizzare il sistema contemporaneamente.

Il primo processo in un sistema Linux, sia esso init o systemd, avvia un programma getty. Questo getty, abbreviazione di "get tty" (tty indica terminali fisici o virtuali), è responsabile della protezione del sistema da accessi non autorizzati.

Quando provi a connetterti a un sistema Linux direttamente (se hai un server installato su un sistema in locale) o tramite SSH (se hai il server in una posizione remota), getty ti chiede (tramite il programma di accesso) di inserire il tuo nome utente e quando viene inserito il nome utente, viene richiesta la password.

Le tue voci vengono verificate rispetto alle informazioni memorizzate nel file /etc/passwd. Le voci nel file /etc/passwd contengono alcune informazioni come nome utente, ID utente, home directory e il primo programma che dovrebbe essere avviato dopo che l'accesso è riuscito.

Come puoi vedere nell'immagine sopra, il primo programma da avviare quando l'utente abhishek effettua il login. Per gli utenti standard in Linux, è la shell di login.

Potrebbero esserci anche altri valori nel campo. Ad esempio, sshd è un utente di sistema, non un utente reale e non può accedere al sistema in modo interattivo come un utente normale come abhishek.

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

Se non ci sono voci nella colonna del primo programma/login shell, il default è /bin/sh, cioè la shell standard.

Spero non fossero troppe informazioni.

Shell di accesso e shell non di accesso

Va bene, quindi hai effettuato l'accesso a un sistema e sai che è una shell di accesso. Ma cosa significa? Ci sono anche altre conchiglie? Dove sono?

In Linux, quando si esegue uno script di shell, viene eseguito nella propria shell (una shell non interattiva). È possibile avviare una nuova shell dalla shell corrente (una shell interattiva).

In termini tecnici, questi sono subshell ma più avanti su questo argomento. Per ora concentriamoci sulla shell di accesso.

File di profilo e RC per la shell

La shell di login legge la variabile d'ambiente e altre configurazioni da /etc/profile e un file di profilo nella directory home. Ciò ti consente di avere il completamento delle schede, l'output colorato e imposta altre cose come umask ecc.

Probabilmente sai che ci sono più di una shell disponibile per i sistemi Linux. La maggior parte delle distribuzioni Linux utilizza la shell bash per impostazione predefinita, ma puoi installare una shell diversa come zsh o Fish shell.

Se la tua shell di accesso è bash, legge dal file /etc/profile e ~/.bash_profile. Se la tua shell di accesso è zsh, legge da /etc/zprofile e ~/.zprofile.

I file nella directory /etc impostano la rispettiva configurazione della shell per tutti gli utenti del sistema. Questo è normalmente impostato dall'amministratore di sistema.

I file nella directory home dell'utente sono specifici dell'utente, ovviamente. Ciò consente agli utenti di creare alias per i comandi utilizzati di frequente o di utilizzare una variabile PATH personalizzata per un programma.

Le shell non di login provengono dalla shell di login e quindi ottengono tutto l'ambiente impostato dalla shell di login tramite i file di profilo. In aggiunta a ciò, la shell interattiva senza login può definire le proprie variabili d'ambiente attraverso i file rc (configurazione delle risorse) in /etc o nella directory home.

Per la shell bash, di solito sono i file /etc/bash.bashrc e ~/.bash_rc mentre per la shell zsh, è /etc/zshrc e ~/.zshrc.

Permettetemi di mostrare la differenza con un esempio pratico.

Nota come il prompt della shell cambia in un colore verdastro? È perché legge il file /etc/bash.bashrc e Ubuntu ha inserito parametri aggiuntivi in ​​questo file. Il prompt colorato è uno di questi.

Per riassumere:

  • I file di profilo sono per shell di accesso interattive. I file rc sono per shell interattive senza login.
  • I file nella directory /etc vengono eseguiti prima e poi i file nella directory home.
  • Le shell interattive senza login traggono vantaggio sia dai file di profilo che da quelli rc.

Come sapere se sei in una shell di accesso?

In realtà è molto semplice, almeno per la shell bash. Per la shell di accesso, il nome dell'eseguibile della shell inizia con - . Per la shell senza login, è solo il nome della shell.

Sai come controllare la shell, giusto? Controlla il valore dell'argomento 0.

Su desktop Linux, non usi la shell di accesso. Il tuo login è gestito da un display manager. Questo è il motivo per cui quando apri un terminale nel desktop Linux, vedrai che anche la prima shell in esecuzione nel terminale non è una shell di accesso.

Ho cercato di chiarire le cose sulla shell di accesso qui. Tuttavia, se non ti sei mai chiesto queste cose, potrebbero lasciare alcune domande senza risposta. Sentiti libero di chiederlo nella sezione commenti e cercherò di rispondere.

Se sei un utente esperto che sta leggendo questo articolo e trovi qualcosa di tecnicamente errato o qualche punto importante mancante, faccelo sapere nei commenti.


Linux
  1. Che cos'è un utente Linux?

  2. Come cambiare la shell in Linux

  3. Quali sono i diversi tipi di shell in Linux?

  4. UNIX/Linux:cos'è una shell? Cosa sono le diverse conchiglie?

  5. Modifica della shell predefinita in Linux

Che cos'è Subshell in Linux?

Che cos'è Shebang negli script della shell di Linux?

Che cos'è la media del carico in Linux?

Che cos'è il file .bashrc in Linux?

8 tipi di shell Linux

Cos'è un file .sh?