Qual'è la differenza tra “source” e “.”?


147

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

Risposte:


134

sourcee .sono anche sinonimi di Bash .

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


dove viene definito? Voglio dire lo è. un alias per la fonte o è qualcos'altro?
BinW,

stessa identica cosa

12
@binW: .è il comando sorgente tradizionale, ereditato dall'antica shell bourne. sourceè solo un built-in bash che fa esattamente lo stesso ., presumibilmente perché è più leggibile (un .solo può essere difficile da individuare con un carattere piccolo). Vedrai help sourcee help .mostrerai le stesse informazioni.
geirha,

3
@binW: se cerchi man bashe poi cerchi source, vedrai che source filename [arguments]è sinonimo di . filename [arguments].
Matthew Rankin,

46

.è sinonimo di sourcein bash, ma non in POSIX sh, quindi è necessario utilizzarlo .se lo script è eseguito da / bin / sh. Nota che bash afferma di funzionare come POSIX sh quando viene chiamato come / bin / sh, ma accetta sourcesenza lamentele.

Questo comportamento mi ha morso, gli script testati con bash come / bin / sh falliscono quando vengono eseguiti sotto ash, per esempio.


16
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 purché siano implementate quelle descritte da POSIX. Quando lo shebang dice #!/bin/shche non dovresti mai supporre che la shell supporti nient'altro che le funzionalità POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/…
geirha

Potresti essere interessato dall'ordine di cercare i nomi: unix.stackexchange.com/q/17815/8250
Lekensteyn,

3
Questa risposta mi ha aiutato, poiché sh è spesso usato in cron.
dfrankow
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.