Diferencia entre nombre de archivo y . nombre de archivo en la terminal macOS

Soy novato en MacOS. (Estoy usando mac OS high sierra 10.13.6) Instalé un software. Dijeron que inicializara el software por

. /ruta/setsas.sh

No pienso en . y el espacio, así que solo corrí

ruta/setsas.sh

Parecía funcionar, pero después de eso no pude ejecutar ningún comando del software. Descubrí que debería haber ejecutado el comando por así decirlo, y después de eso estuvo bien. Entonces que estos. y el espacio significa aquí, y ¿alguien sabe por qué no pude ejecutar ningún comando al principio a pesar de que el archivo parecía ejecutarse? Yo sé eso . a veces significa carpeta actual, pero no lo parece en este caso.

¿ Intentó ejecutar . /path/setsasdespués de darse cuenta de su error?
Cuando se utiliza la línea de comandos de Unix, la puntuación y los espacios son importantes . No los cambies a menos que los entiendas.

Respuestas (2)

. /path/setsas.shcarga las variables y funciones del script en su sesión de shell actual. Es lo mismo que correr source /path/setsas.sh. Correr, path/setsas.shpor otro lado, genera un nuevo proceso. Las variables y funciones no serán accesibles desde su shell actual. Por eso no te funcionaban los comandos.

Cuando "simplemente ingresa un comando", OS/X (como cualquier Unix/Linux) usa la $PATHvariable de entorno para especificar las ubicaciones que se buscarán para encontrarlo, a menos que sea un comando bash/shell incorporado.

Cuando especifica ./command, es una referencia explícita a un archivo en particular en un directorio en particular: "el 'actual'". $PATHno se utiliza y el comando no se considera "incorporado".

Así mismo, ~/commandes una referencia explícita, esta vez utilizando "~"como acceso directo a "mi directorio de inicio". Una vez más, $PATHno se utiliza.

(Unrelated ...)El sourcecomando de shell requiere una referencia específica a un archivo y hace que el shell lea y ejecute todos los comandos en ese archivo. (Por ejemplo, si cambia su archivo de "perfil de bash" y desea incorporarlo sin volver a iniciar sesión, esta es una forma de hacerlo).

Tenga en cuenta el espacio después de la. . en la pregunta El problema no está relacionado con la ruta, sino con la fuente del archivo como en la otra respuesta.