En un intérprete de comandos Unix , el punto final, denominado comando punto ( . ), es un comando que evalúa comandos en un archivo de computadora en el contexto de ejecución actual. [ 1 ] En el intérprete de comandos C , se proporciona una funcionalidad similar como el sourcecomando, [ 2 ] y este nombre también se ve en los intérpretes de comandos POSIX "extendidos". [ 3 ] [ 4 ]
El comando dot no debe confundirse con un archivo dot , que es un archivo o directorio oculto con prefijo dot . Tampoco debe confundirse con la ./scriptfilenotación para ejecutar comandos, que es simplemente una ruta relativa que apunta al directorio actual (anotada en Unix con el carácter '.' y normalmente fuera de la variable Path ).
Argumentos
El nombre del archivo es el primer argumento del comando `dot` . Cuando este argumento no contiene una barra diagonal , el intérprete de comandos 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 que se va a ejecutar no tiene por qué ser ejecutable . De lo contrario, el nombre del archivo se considera una simple ruta al archivo. [ 1 ]
En varios intérpretes de comandos "extendidos", como bash, [ 3 ] zsh [ 4 ] y ksh, [ 5 ] se pueden especificar parámetros en un segundo argumento. Si no se especifican parámetros, el archivo fuente recibirá el conjunto de parámetros posicionales disponibles en el contexto actual. Si se especifican parámetros, el archivo fuente recibirá solo los parámetros especificados. En cualquier caso, el parámetro $0será el $0del contexto actual.
Usos
Dado que la ejecución del archivo fuente se realiza en el contexto de invocación, el entorno [ nota 1 ] , los cambios dentro se aplican al proceso o shell actual. Esto es muy diferente de los scripts ejecutados directamente por shebang o como sh foo.sh, que se ejecutan en un espacio de proceso nuevo y separado, con un entorno separado.
Por lo tanto, el comando dot se puede utilizar para dividir un script grande en partes más pequeñas, lo que potencialmente permite un diseño modular . El shell también suele realizar la carga de archivos al iniciar la sesión para archivos de perfil de usuario como .bashrcy .profile.
source
sourcees un comando integrado del 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 está escribiendo comandos durante una sesión interactiva.
El comando source se puede abreviar con un punto ( .) en Bash y shells similares a POSIX. Sin embargo, esto no es aceptable en C shell , donde apareció el comando por primera vez.
Algunos scripts de Bash deben ejecutarse usando la source your-scriptsintaxis en lugar de como un comando ejecutable, por ejemplo, si contienen un comando para cambiar de directorio ( cd) y el usuario pretende que permanezcan en ese directorio después de que el script se complete, o si contienen un comando de exportación 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 "execute" . Pasar el nombre del archivo de script al shell deseado ejecutará el script en un subshell , no en el contexto actual.
Notas
- ↑ Consulte Entorno de ejecución de shell en POSIX.1:2013.
Referencias
- 1 2 "POSIX.1:2013 Shell Command Language § dot" . Consultado el 23 de mayo de 2016 .
- ↑ "Página de manual de Csh#comando" . Consultado el 23 de mayo de 2016 .
- 1 2 "Manual de referencia de Bash § Bourne Shell Builtins" . Consultado el 23 de mayo de 2016 .
- 1 2 "Comandos integrados del shell ZSH" . Consultado el 23 de mayo de 2016 .
- ↑ "página man de ksh" . Oracle . Consultado el 23 de mayo de 2016.
+ . nombre [arg ...]
- ↑ "COMANDOS INTEGRADOS DE BASH", la página man de Linux para "source" en Bash-3.0. 20 de abril de 2004
Enlaces externos
- Explicación de los tres usos diferentes del punto en Unix.
- Programas estándar de Unix
- Utilidades Unix SUS2008
- Comandos de Qshell para IBM i