¿Cuál es la diferencia entre "fuente" y "."?

147

¿Cuál es la diferencia entre ejecutar un script (por ejemplo, / some / script) con source /some/scripty . /some/scripten Bash?

binW
fuente

Respuestas:

134

sourcey .son sinónimos en Bash .

Para cualquiera que quiera verificar que los comandos son simplemente sinónimos y nada más, mire el código fuente , digamos para la versión 4.3, y examine el archivo builtins/source.def. Usted va a leer que los dos comandos internos, sourcey ., utilizar la misma función: source_builtin.

kiamlaluno
fuente
¿Dónde se define esto? Quiero decir es. un alias para la fuente o es algo más?
binW
exactamente lo mismo
12
@binW: .es el comando fuente tradicional, heredado del antiguo shell bourne. sourcees solo un bash incorporado que hace exactamente lo mismo ., presumiblemente porque es más legible (un .solo puede ser difícil de detectar con una fuente pequeña). Verás help sourcey help .muestra la misma información.
geirha
3
@binW: Si observa man bashy luego busca source, verá que source filename [arguments]es sinónimo de . filename [arguments].
Matthew Rankin
46

.es sinónimo sourcede bash, pero no de POSIX sh, por lo que debe usarlo .si / script / sh ejecuta su script. Tenga en cuenta que bash afirma ejecutarse como POSIX sh cuando se llama como / bin / sh, pero acepta sourcesin quejarse.

Este comportamiento me ha mordido, los scripts probados con bash como / bin / sh fallan cuando se ejecutan bajo cenizas, por ejemplo.

jjg
fuente
16
POSIX no restringe el shell. POSIX solo dice; el shell soportará al menos esta y esa característica. Por lo tanto, un shell POSIX es libre de implementar características adicionales siempre que se implementen las descritas por POSIX. Sin #!/bin/shembargo, cuando el shebang dice que nunca debes asumir que el shell admite nada más que las características POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/…
geirha
Puede verse afectado por el orden de búsqueda de nombres: unix.stackexchange.com/q/17815/8250
Lekensteyn
3
Esta respuesta me ayudó, ya que sh se usa a menudo en cron.
dfrankow