El .comando (que tiene un sinónimo, sourcein bash, pero no en la mayoría de los demás derivados de shell Bourne) lee el archivo nombrado como parte del shell actual.
NB: Truco 1: supongo que test.shes ejecutable. Truco 2: supongo que test.shestá en un directorio en $PATH.
Significa que las variables de entorno establecidas test.shafectan el shell actual. Por el contrario, ejecutar un comando sin el .no afecta el entorno del shell actual. El .mecanismo se utiliza cuando .profilese leen y los archivos relacionados, por ejemplo.
Tenga en cuenta que .busca nombres simples (como test.shsin una barra inclinada) en PATH, pero el archivo solo debe ser legible; No tiene que ser ejecutable.
Tenga en cuenta que cuando bashno está en modo POSIX, ./ sourcetambién verifica el directorio actual si no se encuentra ningún archivo usando PATH.
chepner
@chepner: Eso es completamente plausible. No me he molestado en experimentar si el directorio actual se busca primero o el último. En su mayor parte, no es importante para esta pregunta, que se trata de la diferencia de alto nivel entre el abastecimiento y la ejecución de un script. Sin embargo, estoy de acuerdo en que sí importa si vas a hacer un sistema a prueba de balas dependiendo de tal script.
El dotcomando es anterior al sourcecomando por años. Estaba en el shell Bourne original. El shell C tenía el sourcecomando para el mismo trabajo; bashimportó eso como sinónimo para .algún tiempo después.
bash
no está en modo POSIX,.
/source
también verifica el directorio actual si no se encuentra ningún archivo usandoPATH
.Es una abreviatura para esto, nada más:
http://ss64.com/bash/period.html
fuente
dot
comando es anterior alsource
comando por años. Estaba en el shell Bourne original. El shell C tenía elsource
comando para el mismo trabajo;bash
importó eso como sinónimo para.
algún tiempo después.