Me preguntaba si las siguientes dos formas de ejecutar un script bash son equivalentes.
. ./myScript.sh source myScript.sh- ¿Ambos ejecutan el contenido del script en lugar de ejecutar el script, es decir, no crean una subshell para ejecutar el script?
bash
shell
shell-script
Tim
fuente
fuente

man .,man sourceo lo que sea que aún no sepa.type .andhelp .man $SHELL,/sourceRespuestas:
Son equivalentes en bash porque hacen exactamente lo mismo. Por otro lado,
sourcetiene 5 caracteres más y no es portátil para shells solo POSIX o Bourne, mientras que.(dot) lo es, así que nunca me molesto en usarlosource.Eso es correcto: el abastecimiento de un archivo ejecuta los comandos en el shell actual y afectará su entorno de shell actual. Todavía puede pasar argumentos al archivo de origen y bash realmente buscará
$PATHel nombre del archivo como un comando normal si no contiene barras.No relacionado con la pregunta original de
.vssource, pero en su ejemplo,no es idéntico a
porque while
.ysourceson funcionalmente idénticos,myScript.shy./myScript.shno son lo mismo. Como./myScript.shcontiene una barra oblicua, se interpreta como una ruta y el shell simplemente la usa./myScript.sh. Sin embargo,myScript.shno tiene una barra oblicua, por lo que el shell$PATHprimero lo busca. Este es el comportamiento estándar especificado por POSIX para.. La mayoría de los shells se configuran de manera predeterminada, aunque pueden agregar extensiones (como buscar en el directorio de trabajo actual después de la búsqueda de ruta) u opciones para cambiar el comportamiento de./source.fuente
/depende del shellbashyzshdepende de si el modo POSIX está habilitado o no. También tenga en cuenta que en muchas implementaciones de ksh, se.comporta de manera diferente asource.Si, son equivalentes. No hay diferencia funcional;
.es solo un sinónimo incorporado parasource.(Edit: Al parecer, esto sólo es cierto para
bashyzshalgunos proyectiles más ligeros no tienen.source, Solamente.está especificada por POSIX modoksh,dash,ash, etc pueden no tenersourceVer. La respuesta de jw013 para obtener información.)fuente
$ alias .salidasbash: alias: .: not found.