En un shell Unix , el punto llamado comando punto ( . ) es un comando que evalúa los comandos en un archivo de computadora en el contexto de ejecución actual. [1] En el shell C , se proporciona una funcionalidad similar a la del source
comando, [2] y este nombre también se ve en los shells POSIX "extendidos". [3] [4]
El comando punto no debe confundirse con un archivo punto , que es un archivo oculto con prefijo punto o un directorio oculto . Tampoco debe confundirse con la ./scriptfile
notación para ejecutar comandos, que es simplemente una ruta relativa que apunta al directorio actual (anotada en Unix como un carácter '.' y normalmente fuera de la variable Ruta ).
El nombre del archivo es el primer argumento del comando punto . Cuando este argumento no contiene una barra diagonal , el shell buscará el archivo en todos los directorios definidos en la variable de entorno PATH . A diferencia de los comandos normales que también se encuentran en PATH, el archivo fuente no tiene que ser ejecutable . De lo contrario, el nombre del archivo se considera una ruta simple al archivo. [1]
En varios shells "extendidos", incluidos bash, [3] zsh [4] y ksh, [5] se pueden especificar parámetros en un segundo argumento. Si no se especifica ningún parámetro, el archivo de origen recibirá el conjunto de parámetros posicionales disponibles en el contexto actual. Si se especifican parámetros, el archivo de origen recibirá solo los parámetros especificados. En cualquier caso, el parámetro $0
será el $0
del contexto actual.
Dado que la ejecución del archivo fuente se realiza en el contexto de invocación, el entorno [nota 1] cambió dentro de la aplicación al proceso actual o al shell actual. Esto es muy diferente de los scripts ejecutados directamente por shebang o as sh foo.sh
, que se ejecutan en un espacio de proceso nuevo e independiente, con un entorno independiente.
Por lo tanto, el comando punto se puede utilizar para dividir un guión grande en partes más pequeñas, lo que potencialmente permite un diseño modular . El shell también suele realizar el abastecimiento al iniciar la sesión para archivos de perfil de usuario como .bashrc
y .profile
.
source
es un comando integrado en el shell que evalúa el archivo que sigue al comando, como una lista de comandos, ejecutados en el contexto actual. [6] Con frecuencia, el "contexto actual" es una ventana de terminal en la que el usuario escribe comandos durante una sesión interactiva.
El comando fuente se puede abreviar simplemente como un punto ( .
) en Bash y shells similares a POSIX. Sin embargo, esto no es aceptable en el shell C , donde apareció el comando por primera vez.
Algunos scripts Bash deben ejecutarse usando la source your-script
sintaxis en lugar de ejecutarse como un comando ejecutable, por ejemplo, si contienen un comando de cambio de directorio ( cd
) y el usuario desea dejarlos en ese directorio después de que se complete el script, o si contienen un comando de exportación. comando y el usuario quiere modificar el entorno del shell actual. Otra situación de uso es cuando un archivo de script no tiene el permiso de "ejecución" . Pasar el nombre del archivo del script al shell deseado ejecutará el script en un subshell , no en el contexto actual.
+ . nombre [arg...]