GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecutar secuencia de comandos con ". ¿Y con “fuente”?

  1. Me preguntaba si las siguientes dos formas de ejecutar un script bash
    son equivalentes.

    . ./myScript.sh
    
    source myScript.sh
    
  2. ¿Ambos ejecutan el contenido de la secuencia de comandos en lugar de ejecutar la secuencia de comandos, es decir, no crean una subcapa para ejecutar la secuencia de comandos?

Respuesta aceptada:

  1. Son equivalentes en bash en que hacen exactamente lo mismo. Por otro lado, source tiene 5 caracteres más y no es portátil para shells solo POSIX o Bourne, mientras que . (punto) es, así que nunca me molesto en usar source .

  2. Eso es correcto:obtener un archivo ejecuta los comandos en el shell actual y afectará su entorno de shell actual. Todavía puede pasar argumentos al archivo fuente y bash realmente buscará en $PATH para el nombre del archivo como un comando normal si no contiene barras.

No relacionado con la pregunta original de . vs source , pero en tu ejemplo,

. ./myScript.sh 

no es idéntico a

source myScript.sh

porque mientras . y source son funcionalmente idénticos, myScript.sh y ./myScript.sh no son lo mismo. Desde ./myScript.sh contiene una barra inclinada, se interpreta como una ruta y el shell solo usa ./myScript.sh . Sin embargo, myScript.sh no tiene una barra, por lo que el shell hace un $PATH buscarlo primero. Este es el comportamiento estándar especificado por POSIX para . . La mayoría de los shells tienen esto predeterminado, 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 .


Linux
  1. Grabe su terminal con script y scriptreplay

  2. Evitar que un script bash se ejecute simultáneamente

  3. ¿Fusionar carpetas con Mv?

  4. ¿Script de shell con función y parámetro como variables?

  5. ¿Cómo agregar automáticamente una cuenta de usuario Y una contraseña con un script Bash?

Mapas mentales de código abierto con Draw.io

Transfiere archivos entre tu teléfono y Linux con esta herramienta de código abierto

Una introducción a los diferenciales y parches

Cómo escribir un script Bash con ejemplos

Domótica:Ejecución de Home Assistant con Podman

Script de Linux para verificar si el proceso se está ejecutando y actuar sobre el resultado