Per favore dimmi qual è la differenza in bash shell tra l'avvio di uno script con ./script.sh
e . ./script.sh
?Differenza tra l'avvio di uno script con ./script.sh e. ./script.sh
risposta
Come dice klausbyskov, il primo modulo richiede che il file abbia il suo bit di autorizzazione eseguibile impostato.
Ma, ancora più importante, il primo modulo esegue lo script in un processo separato (distinto da, indipendente e non in grado di apportare modifiche nella shell che lo ha avviato). La seconda forma fa sì che la shell iniziale esegua direttamente i comandi dal file (come se li avessi inseriti nella shell, o come se fossero inclusi nello script che esegue il "sourcing").
Uno script che contiene FOO=bar; export FOO
non avrà creato una variabile di ambiente FOO
esportata nella shell che esegue la prima variante, ma creerà tale variabile in una shell che esegue la seconda variante.
La seconda forma (‘approvvigionamento’) è un po 'come un #include
in C.
Il primo richiede che il file abbia il flag + x impostato. Il secondo usa il. comando aka "source", descritto here.
- 1. cosa è la differenza tra l'esecuzione di uno script di shell come ./script.sh e sh script.sh
- 2. Qual è la differenza tra "source script.sh" e "./script.sh"?
- 3. Come eseguire ./script.sh in Windows Git shell?
- 4. Qual è la differenza tra $ @ e $ * nello script di shell?
- 5. "CMD ['/home/user/script.sh']" nel file docker non funziona con docker-compose
- 6. Come creare uno script di bash che accetta argomenti?
- 7. passaggio di parametri per colpire durante l'esecuzione di uno script prelevato dal ricciolo
- 8. Differenza tra ksh e bash script di
- 9. Differenza tra dichiarazioni di "tipo script" e "linguaggio di script"
- 10. Esecuzione di uno script di shell bash in java
- 11. Come impostare un alias all'interno di uno script di shell bash in modo che sia visibile dall'esterno?
- 12. Bash - Come passare argomenti a uno script letto tramite input standard
- 13. Come si passa una stringa vuota con virgolette doppie a uno script bash?
- 14. Avvia uno script come root tramite ADB
- 15. In che modo uno script Linux/Unix Bash conosce il proprio PID?
- 16. Differenza tra <script> tag con tipo e <script> senza tipo?
- 17. Incorporamento awk in uno script di shell
- 18. Quando si richiama uno script Python, qual è la differenza tra "./script.py" e "python script.py"
- 19. "find" e "ls" con GNU parallel
- 20. Qual è la differenza tra l'esecuzione di uno script dalla riga di comando e da exec() con PHP?
- 21. Come memorizzare un output di script di shell su una variabile in Unix?
- 22. Qual è la differenza tra mettere uno script in testa e corpo?
- 23. Qual è la differenza tra un modulo e uno script in Python?
- 24. Differenza tra $ # e $ {# @}
- 25. Differenza tra | = e^= css
- 26. Come eseguire script di shell da LaTeX?
- 27. Differenza tra uno storyboard e un pacchetto storyboard?
- 28. Script Kerberos Ktutil per creare tabelle di tasti
- 29. Differenza Javascript tra eval() e tag script aggiunti
- 30. Esci da una schermata dopo che uno script è finito
Anche se questo è vero, la distinzione più importante è che la "fonte" legge ed esegue il file nell'istanza shell corrente. L'esecuzione dello script avvia una nuova istanza della shell (come specificato nella riga shebang) in cui viene eseguito lo script. –
@Dan, sì è giusto, ed è anche spiegato nel link che ho postato. –
Questo è il flag '-x' * permesso *, non l'opzione bash -x * * solo per essere chiari. –