source è un comodo comando shell integrato che accetta argomenti, analizza i comandi in uno script e li esegue nell'ambiente shell. Il contenuto del file viene letto dall'origine e quindi passato all'interprete Tool Command Language (TCL), che esegue i comandi.
Impariamo come utilizzare source per eseguire comandi e lavorare con ambienti shell su Linux, insieme a una breve spiegazione di come differisce dal comando bash.
Usa source per eseguire comandi in un file
Per utilizzare il comando source, devi prima creare un file di esempio e popolarlo con alcuni comandi della shell. Inizia creando un nuovo file con il comando tocco. Apri il file in un editor di testo a tua scelta e scrivi alcuni comandi shell di base.
toccotest.TXT
VItest.TXT# Scrivi i comandi nel file di testo:
eco "Ciao!"
pwd
ls
# Origina il file con la sintassi source o dot
. test.TXT
fontetesto.TXT
Scrivi il file di testo e passalo come argomento al comando source. Il sistema eseguirà i comandi nel file e restituirà un output.
Ora che conosci le basi su come utilizzare i sorgenti, proviamo a cambiare l'ambiente della shell Bash. Tuttavia, prima di procedere, è necessario avere una comprensione fondamentale di
variabili d'ambiente in Linux.Utilizzare il comando source per aggiornare l'ambiente della shell Bash
Su Linux, le variabili di ambiente sono ereditate ma immutabili. Se esegui uno script di shell Bash che modifica una variabile di ambiente $TEST, lo script genererà un nuovo, processo di shell biforcuto e la modifica di $TEST avverrà al suo interno anziché nella Bash originale ambiente.
Il processo figlio non sarà in grado di modificare l'ambiente del processo padre. Può solo modificare il proprio ambiente. Cerchiamo di capirlo con un esempio pratico:
esporta TEST="deb"
vi esempio# Digita questi comandi nel file
esporta TEST="letto"
eco $PROVA
# Scrivi il file, rendilo eseguibile, quindi eseguilo
chmod +x esempio
./esempio # questo restituirà "letto"
eco $PROVA # questo restituirà "deb"
Ecco dove entra in gioco il comando source. Con il comando source, puoi eseguire uno script nello stesso ambiente shell, che altrimenti sarebbe stato biforcuto. Quindi, se generi uno script che modifica le variabili di ambiente, apporterà le modifiche per l'ambiente della shell Bash.
Per provarlo, scrivi i comandi nella casella del codice sopra in un nuovo file e usa il comando source invece di renderlo eseguibile.
# Crea un nuovo file e modificalo
VI test file
. file_prova
eco $PROVA # Questo restituirà "letto"
Come puoi vedere, usando il comando source, sei stato in grado di aggiornare le variabili d'ambiente del processo genitore. Questo è il caso d'uso principale del comando source, ovvero per modificare l'ambiente padre.
Questi sono tutti i passaggi necessari per aggiornare l'ambiente della shell Bash con il comando source.
Differenza tra i comandi bash e source di Linux
La differenza tra i comandi bash e source di Linux è che quando esegui uno script con il comando bash, dice a Linux kernel per creare un nuovo processo Bash per leggere ed eseguire lo script, copiare l'output nel processo shell originale e visualizzarlo.
Ma il comando sorgente è una shell incorporata che legge e valuta un file all'interno del processo di shell corrente. Pertanto, tutte le modifiche apportate dallo script verranno mantenute nella shell Bash.
Risoluzione dei problemi relativi agli errori di comando di origine
In alcuni sistemi Linux, potresti incorrere in un errore "fonte non trovata" durante il tentativo di utilizzare il comando sorgente. Puoi correggere questo errore in due modi:
1. Cambia la conchiglia
Alcune shell non supportano il comando source. In tal caso, dovrai modificare il tuo ambiente di shell con il file chsh -s ($quale nome_shell) comando.
Avvia un nuovo terminale dopo cambiando il guscioe prova a utilizzare il comando source. Se la nuova shell supporta il sourcing, dovrebbe funzionare perfettamente.
2. Usa la sintassi punto/punto
Alcuni ambienti shell non supportano "fonte" sintassi ma l'alternativa "."sintassi. La sintassi "source" è sinonimo di punto in Bash. Ma questo non funziona nella shell POSIX, quindi per la massima compatibilità, usa la sintassi del punto.
Comandi di base di Linux che dovresti conoscere
I comandi della shell di Linux sono un ottimo modo per interagire con il sistema utilizzando il terminale. Sono l'essenza stessa dell'utilizzo dei sistemi *NIX.
Sebbene non sia necessario conoscere tutti i comandi, avere familiarità con alcuni di quelli utili si rivelerà sicuramente fruttuoso mentre ti avventuri in profondità nel mondo di Linux.