¿Cuál es la diferencia entre ejecutar un script (por ejemplo, / some / script) con source /some/script
y . /some/script
en Bash?
147
source
y .
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, source
y .
, utilizar la misma función: source_builtin
.
.
es el comando fuente tradicional, heredado del antiguo shell bourne.source
es 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áshelp source
yhelp .
muestra la misma información.man bash
y luego buscasource
, verá quesource filename [arguments]
es sinónimo de. filename [arguments]
..
es sinónimosource
de 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 aceptasource
sin quejarse.Este comportamiento me ha mordido, los scripts probados con bash como / bin / sh fallan cuando se ejecutan bajo cenizas, por ejemplo.
fuente
#!/bin/sh
embargo, 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/…