GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione del comando sorgente su Linux

Il comando sorgente su Linux è una funzione piuttosto popolare eseguita quotidianamente dagli amministratori di sistema.

Ma qual è la funzione del comando sorgente?

Utilizzato per aggiornare l'ambiente shell corrente , il comando sorgente può essere utilizzato anche per importare funzioni in altri script bash o per eseguire script nell'ambiente shell corrente.

Nel tutorial di oggi, vedremo come utilizzare il comando sorgente su Linux.

I comandi verranno eseguiti in un ambiente Debian 10 con GNOME, ma funzioneranno per ogni distribuzione.

Interni dei comandi di origine

Prima di iniziare, è importante avere una comprensione completa di cosa sono le variabili di ambiente e shell.

Per impostazione predefinita, su Linux, il tuo sistema possiede già un paio di variabili di ambiente per memorizzare varie informazioni come la shell da utilizzare, il tuo nome host o il tuo nome utente corrente.

Le variabili di ambiente vengono inizializzate dal sistema e vengono ereditate da tutti i processi nel sistema. Di conseguenza, quando esegui un'istanza della shell, devi ottenere il valore delle variabili di ambiente sul tuo sistema.

$ echo $USER
devconnected

D'altra parte, le variabili di shell sono variabili dichiarate nel contesto di un'istanza di shell e non sono condivisi con altre shell o con processi figlio.

$ VARIABLE=devconnected
$ echo $VARIABLE
devconnected

Su Linux, quando esegui uno script, molto probabilmente viene eseguito in una subshell.

Di conseguenza, non potrai avere le variabili definite nella tua prima shell in esecuzione nello script, semplicemente non condividono lo stesso ambiente.

Questo è ciò che risolve il comando sorgente.

Il comando source viene utilizzato per valutare il file passato come argomento nel contesto dell'esecuzione corrente. Abbreviato in '.', il comando sorgente viene utilizzato principalmente nel contesto delle shell eseguite nelle finestre del terminale.

$ source filename [arguments]

Si noti che quando vengono forniti argomenti, vengono impostati come parametri posizionali per lo script specificato.

Nota :la documentazione di origine si trova all'interno della documentazione di bash. Per leggerlo, digita “man bash” e cerca il paragrafo del comando sorgente.

Fonte per aggiornare il tuo attuale ambiente shell (.bashrc)

Uno dei motivi principali per utilizzare il codice sorgente è aggiornare l'ambiente shell corrente eseguendo il file bashrc.

Come promemoria, .bashrc è un file di script eseguito ogni volta che avvii un'istanza di shell interattiva.

È definito in base all'utente e si trova nella tua home directory.

Diciamo ad esempio che vuoi aggiungere un nuovo alias al tuo ambiente shell.

Apri il tuo file .bashrc e una nuova voce.

alias ll='ls -l'

Ora prova a eseguire il tuo nuovo comando alias direttamente nel terminale.

Come puoi vedere, le modifiche non sono state applicate direttamente nel tuo ambiente attuale.

Per applicare le modifiche, esegui il comando source con .bashrc file come argomento.

$ source ~/.bashrc

Un modo alternativo per farlo è eseguirlo con la sintassi del punto

$ . ~/.bashrc

Se provi a eseguire nuovamente il tuo alias, dovresti essere in grado di eseguirlo

Sorgente per eseguire uno script nel contesto corrente

Come spiegato in precedenza, il comando source può essere utilizzato per eseguire uno script nel contesto dell'ambiente corrente .

Per illustrare questo punto, definiamo una variabile di shell locale nel tuo attuale ambiente di shell.

$ VARIABLE=devconnected

Ora crea un nuovo script e incolla al suo interno il seguente contenuto

#!/bin/bash

echo $VARIABLE
echo $LOGNAME

La variabile VARIABLE rappresenta la variabile di shell locale che abbiamo creato in precedenza e la variabile LOGNAME è una variabile di ambiente sul tuo host.

Salva il tuo script e dai i permessi di esecuzione allo script appena creato (avrai bisogno dei privilegi sudo per eseguire questo comando)

$ sudo chmod ugo+x <script>

Se provi ad eseguire lo script, dovresti vedere il seguente risultato

Come puoi vedere, la variabile locale $VARIABLE non è stata stampata sullo standard output.

Questo perché lo script è stato eseguito in una subshell con il proprio insieme di variabili locali. La variabile d'ambiente è stata comunque stampata.

Per eseguire questo script nel contesto della nostra attuale shell, useremo il comando source.

Come puoi vedere, in questo caso, la variabile $VARIABLE è stata stampata correttamente sullo standard output.

Sorgente per importare una funzione di script

Una delle grandi caratteristiche del comando sorgente è aggiornare una funzione di script, consentendo una maggiore riutilizzabilità delle funzioni della shell esistenti.

Per illustrare questo punto, prendiamo l'esempio di una funzione che stampa l'utente corrente sullo standard output.

Crea un nuovo file di script e incolla il seguente contenuto all'interno.

$ nano script

#!/bin/bash
# Print the current user to the standard output
printUser() {
   echo $USER
}

Crea un altro script e usa la funzione sorgente per importare la tua funzione printUser.

$ nano import-script

#!/bin/bash
source ./script
printUser

Assegna le autorizzazioni corrette al file che desideri eseguire. Non è necessario disporre delle autorizzazioni di esecuzione per il file contenente la funzione che si desidera importare.

$ sudo chmod u+x import-script
$ ./import-script

Questo è ciò che dovresti vedere sullo schermo.

Come puoi vedere, la funzione è stata correttamente importata ed eseguita, stampando il nome dell'utente corrente del mio host.

Sorgente per leggere le variabili da un file

Un altro ottimo utilizzo del comando sorgente su Linux è leggere variabili da un file.

Supponiamo ad esempio di avere un file con il seguente contenuto in un file denominato "variabili

NAME=devconnected
WEBSITE=devconnected.com
DESCRIPTION="best educational website online"

In un altro file di script, potresti usare quelle variabili usando il comando sorgente per leggere le variabili.

Crea uno script e incolla al suo interno il seguente contenuto.

$ nano variable-script

#!/bin/bash
source ./variables
echo $NAME is a website located at $WEBSITE and it is probably the $DESCRIPTION

Risoluzione dei problemi

In alcuni casi, potresti incorrere in errori durante il tentativo di origine dei file utilizzando il comando source.

Di seguito è riportato un elenco degli errori comuni durante il tentativo di origine dei file.

Comando sorgente non trovato su Linux

In alcuni casi, potresti riscontrare questo errore

$ source: command not found

O usando sudo, potresti anche avere un errore di comando sorgente non trovato.

$ sudo: source: command not found

La soluzione semplice qui è eseguire il comando come utente root usando "su".

$ sudo -s
$ source .bashrc

Nota che puoi anche usare la "sintassi punto" che è equivalente al comando sorgente.

$ . .bashrc

Conclusione

Nel tutorial di oggi, hai imparato qual è il comando sorgente su Linux e come puoi usarlo per eseguire script nel contesto dell'ambiente corrente.

Hai anche imparato che può essere utilizzato per importare funzioni o variabili da un semplice file a un file di script.

Se desideri più tutorial relativi all'amministrazione del sistema Linux, abbiamo una categoria completa dedicata ad esso su devconnected. Clicca sull'immagine qui sotto per leggerli.


Linux
  1. Spiegazione approfondita del comando della cronologia in Linux

  2. ls Command in Linux:17 esempi utili spiegati

  3. Comando Linux mv

  4. Linux du comando

  5. Esempi di comandi chsh in Linux

Comando sorgente in Linux

Spiegazione del comando procinfo in Linux

Spiegazione del comando dello schermo su Linux

Spiegazione del comando Arping su Linux

Spiegazione del comando di esportazione in Linux

Esporta comando in Linux | Spiegato