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.
. /path/setsas.sh
carga 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.sh
por 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 $PATH
variable 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'". $PATH
no se utiliza y el comando no se considera "incorporado".
Así mismo, ~/command
es una referencia explícita, esta vez utilizando "~"
como acceso directo a "mi directorio de inicio". Una vez más, $PATH
no se utiliza.
(Unrelated ...)
El source
comando 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).
IconoDaemon
. /path/setsas
después de darse cuenta de su error?gordon davisson