Domanda Qual è la differenza tra "source" e "."?


Qual è la differenza tra l'esecuzione di uno script (ad esempio / alcuni / script) con source /some/script e . /some/script in Bash?


136
2018-02-09 17:18


origine




risposte:


source e . sono anche in bash.

Per chiunque desideri verificare che i comandi siano semplicemente sinonimi e nient'altro, guarda il codice sorgente, per la versione 4.3, ed esamina il file builtins/source.def. Leggerai che entrambi i comandi incorporati, source e ., usa la stessa funzione: source_builtin.


123
2018-02-09 17:26



dove è definito? Voglio dire è. un alias per la fonte o si tratta di qualcos'altro? - binW
la stessa identica cosa
@binW: . è il tradizionale comando sorgente, ereditato dall'antica conchiglia a bourne. source è solo un built-in bash che fa esattamente lo stesso di ., presumibilmente perché è più leggibile (a . da solo potrebbe essere difficile da individuare con un font piccolo). Vedrai help source e help . mostra le stesse informazioni. - geirha
@binW: se guardi dentro man bash e quindi cercare source lo vedrai source filename [arguments] è sinonimo di . filename [arguments]. - Matthew Rankin
Questo in realtà contraddice ciò che vedo in questa domanda: askubuntu.com/questions/182012/... - ysap


. è sinonimo di source in bash, ma non in POSIX sh, quindi dovresti usare . se lo script è eseguito da / bin / sh. Si noti che bash afferma di funzionare come POSIX sh quando viene chiamato come / bin / sh, ma accetta source senza lamentarsi.

Questo comportamento mi ha morso, gli script sono stati testati con bash e / bin / sh hanno avuto esito negativo quando si eseguiva il cenere, per esempio.


41
2018-02-09 20:42



POSIX non limita la shell. POSIX dice solo; la shell deve supportare almeno questa e quella caratteristica. Quindi una shell POSIX è libera di implementare funzionalità aggiuntive a patto che vengano implementate quelle descritte da POSIX. Quando dice lo shebang #!/bin/sh non dovresti mai dare per scontato che la shell supporti tutto tranne le funzionalità POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/... - geirha
Potresti essere influenzato dall'ordine in cui appaiono i nomi: unix.stackexchange.com/q/17815/8250 - Lekensteyn
Questa risposta mi ha aiutato, dal momento che sh è spesso usato in cron. - dfrankow