Descrizione:
Shell fornisce un ambiente all'utente in cui l'utente può eseguire più programmi eseguibili e l'output di tali programmi viene visualizzato sul display. Fondamentalmente, la filosofia di lavoro della shell è che attende continuamente l'utente di inserire la stringa. Quindi, questa stringa viene cercata e abbinata ai programmi eseguibili noti presenti nell'ambiente Shell. Se viene trovato il programma eseguibile abbinato, l'eseguibile viene lanciato dopo aver creato un processo figlio. Questo processo figlio appena creato esegue il programma. L'output del programma viene consegnato al processo genitore che è shell. Shell stampa l'uscita sulla console se l'uscita non viene reindirizzata. Le posizioni in cui la shell cerca i programmi eseguibili è presente nella variabile di ambiente, "percorso". La variabile del percorso mantiene il ":" separato in diversi percorsi in cui la shell cerca i programmi eseguibili.
Il diagramma a blocchi per il guscio è mostrato nel seguente:
Dal diagramma a blocchi fornito, possiamo concludere che abbiamo bisogno di una shell per eseguire qualsiasi CETURABILE C in ambiente Linux. Senza la shell, non è possibile eseguire dinamicamente il programma C. Esistono alcuni programmi eseguibili predefiniti che sono noti come comandi della shell. Alcuni esempi dei comandi della shell sono LS, PS, ecc.
Discutiamo i comandi della shell. Esistono due tipi di comandi di shell:
a) Comandi integrati
Questi sono i comandi che sono la parte della shell stessa. Durante l'esecuzione di questi comandi, Shell non è forchetta. Questi comandi vengono eseguiti come parte della shell stessa. Per aggiornare in questi comandi, abbiamo bisogno di un aggiornamento nella shell stessa. Questi comandi sono legati alla shell.
Alcuni esempi dei comandi incorporati sono CD, Echo, Kill, Break, Alias, BG, ecc. Possiamo usare il comando "Help" per vedere l'intero elenco di comandi integrati.
b) Comandi esterni
Questi comandi sono gli eseguibili del programma C separati. Questi non fanno parte del guscio. Questi sono luoghi su percorso specifico. Shell si affaccia su quei percorsi, esegue i programmi e visualizza l'output. L'aggiunta di un nuovo comando all'elenco dei comandi noti è facile; Basta copiare un nuovo programma/comando eseguibile sul percorso noto. Generalmente, questi comandi sono posizionati nel percorso come /usr /bin, /usr /sbin, ecc. Tutte le posizioni sono specificate nel percorso.
Nel mio sistema, il percorso noto verso la shell che è il comando Echo può essere controllato per ottenere l'elenco completo del percorso:
Ubuntu@srathore: $ echo $ path
/home/cienauser/.Local/Bin:/USR/Local/Sbin:/USR/Local/Bin:/USR/SBIN:/USR/
Bin:/sbin:/bin:/USR/Games:/USR/Local/Games:/Snap/Bin
Se vogliamo introdurre un nuovo percorso in questo elenco, possiamo aggiornare i valori alle variabili di ambiente del percorso. Il comando "esportazione" può essere utilizzato per aggiornare il percorso con i nuovi valori.
Usando il comando "Tipo", possiamo ottenere che qualsiasi comando sia integrato o esterno. Facciamo capire l'uso di "tipo". L'esecuzione del tipo con "CD" fornisce il seguente output:
Ubuntu@srathore: ~/$ type cd
Il CD è un guscio incorporato
Ubuntu@srathore: ~/$
L'output del comando precedente è autoesplicativo.
Ora, proviamo il comando "Digita" con il comando LSPCI:
Ubuntu@srathore: ~/$ type lspci
LSPCI IS/USR/Bin/LSPCI
Ubuntu@srathore: ~/$
Poiché l'output mostra il percorso dell'eseguibile, possiamo concludere che questo è un comando esterno.
variabili ambientali
Esistono poche variabili di ambiente che sono definite per il guscio. Fino ad ora, abbiamo capito la variabile del percorso. Il percorso è una variabile di ambiente che fornisce l'elenco del percorso da cercare per comandi esterni. L'elenco completo delle variabili di ambiente può essere verificato con l'aiuto del comando ENV. Il comando Env fornisce l'elenco completo delle variabili di ambiente.
Alcuni esempi per le variabili di ambiente di Shell sono:
Ce ne sono molti altri. Come discusso in precedenza, l'elenco completo può essere controllato con il comando ENV.
Modifica delle variabili di ambiente
I valori necessari possono essere assegnati direttamente alla variabile, poiché Shell ci consente di utilizzare l'operatore di assegnazione. Il valore corrente di qualsiasi variabile shell può essere visto con l'aiuto del comando Echo. Ad esempio, se vogliamo controllare il valore del percorso. L'esecuzione del seguente comando dovrebbe essere in grado di farlo:
Echo $ Path
Utilizzando l'operatore $ prima della variabile all'interno della shell stampa il valore della variabile. Questa è l'offerta del comando Echo. Allo stesso modo, l'eco può essere utilizzata per stampare qualsiasi variabile di ambiente.
Se vogliamo aggiornare la variabile del percorso, vogliamo aggiornare il percorso personalizzato come /usr /cutom che vogliamo aggiungere al percorso. Posizioniamo i nostri comandi cutom su questo percorso. Affinché la shell esegui questi comandi, il suo valore deve essere aggiornato nel percorso. Senza aggiornare il percorso se eseguiamo questi programmi personalizzati, otteniamo l'errore dicendo: "Nessun file o directory". Questo errore dice chiaramente che la shell non è in grado di individuare i comandi.
Come esperimento, pubblichiamo il nostro comando personalizzato, MYLS e MYPS, in/home/sratore/personalizzato. Quando eseguiamo MYLS o MYP da /Home /Srathore, abbiamo il seguente messaggio dalla shell:
srathore@srathore: ~ $ myls
Comanda "myls" non trovato, intendevi:
comando "tyls" dalla terminologia di deb
comando "mmls" da deb sleuthkit
Prova: sudo Apt Installa
srathore@srathore: ~ $ myps
Comanda "myps" non trovato, intendevi:
comanda 'mypy' da deb mypy
Prova: sudo Apt Installa
srathore@srathore: ~ $
I messaggi precedenti mostrano che questi comandi non vengono trovati e un suggerimento è dato da OS per installare questi comandi.
Ora, aggiungiamo il nuovo percorso personalizzato al percorso esistente come segue:
srathore@srathore: ~ $ echo $ path
/home/cienauser/.Local/Bin:/USR/Local/Sbin:/USR/Local/Bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/giochi:/usr/locale/giochi:/snap/bin
srathore@srathore: ~ $ esporta percorso = $ percorso:/home/srathore/custom
srathore@srathore: ~ $ echo $ path
/home/cienauser/.Local/Bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/USR/Games:/USR/Local/Games:/Snap/Bin:/Home/Srathore/Custom
srathore@srathore: ~ $
Il nostro percorso appena aggiunto è evidenziato in grassetto. Possiamo vedere che la variabile per il percorso dell'ambiente viene aggiornata con il nuovo valore.
Ora, proviamo di nuovo a eseguire i comandi presenti nel nostro percorso personalizzato. Eseguindo "Myps" e "Myls", abbiamo il seguente output:
srathore@srathore: ~ $ myps
Pid tty Time cmd
2112 punti/0 00:00:00 Bash
2783 punti/0 00:00:00 Myps
srathore@srathore: ~ $ myls
UN.Out Pack INSTALLED SPD_Tool Build_root_fs Kernel_articles Patch Stime
coreboot kernel_ubuntu pcie_transfer_app stime.C
BASH_ARM Custom LMSensors RedfishTool Telnet_scripts nvm_cli
OpenSsh Snap
srathore@srathore: ~ $
I registri precedenti mostrano che entrambi i comandi hanno funzionato perfettamente. Non abbiamo avuto alcun errore come abbiamo osservato prima di aggiornare la variabile del percorso. Abbiamo discusso della variabile di shell più importante, che generalmente modifica nel nostro lavoro di sviluppo quotidiano. Se installiamo qualsiasi nuovo pacchetto, questa variabile viene aggiornata in modo che i nuovi comandi dello strumento possano essere facilmente posizionati dalla shell.
Conclusione
Abbiamo discusso della definizione di shell. Abbiamo anche visto la filosofia dietro l'implementazione della shell dei diversi tipi di comandi forniti da Shell e le variabili di ambiente della shell. Abbiamo anche attraversato alcune variabili di ambiente. Ancora più importante, abbiamo discusso della variabile del percorso. Abbiamo anche visto il modo per aggiornare il percorso e l'importanza della variabile dimostrata da un esempio. Abbiamo imparato l'importanza di Shell e delle sue offerte.