3 votos

Diferencia entre filename y . filename en el terminal MacOS

Soy novato en MacOS. (Estoy usando mac OS high sierra 10.13.6) He instalado un software. Dijeron para inicializar el software por

. /ruta/setsas.sh

No pienso en . y el espacio, así que sólo corrí

ruta/setsas.sh

Parecía funcionar, pero después no pude ejecutar ningún comando del software. Descubrí que debería haber ejecutado el comando tal cual, y después de eso todo fue bien. Entonces, ¿qué significan estos . y espacio aquí, y alguna suposición de por qué no pude ejecutar ningún comando al principio a pesar de que el archivo parecía correr? Sé que . a veces significa carpeta actual, pero no lo parece en este caso.

0 votos

¿Ha intentado ejecutar . /path/setsas después de darse cuenta de su error?

1 votos

Cuando se utiliza la línea de comandos unix, cosas como la puntuación y los espacios materia . No los cambies a menos que los entiendas.

3voto

Jason Manuta Puntos 46

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

-2voto

Mike Robinson Puntos 111

Cuando "simplemente introduce un comando", OS/X (como cualquier Unix/Linux) utiliza el comando $PATH para especificar las ubicaciones que se buscado para encontrarlo - a menos que sea un comando bash/shell incorporado.

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

Lo mismo digo, ~/command es una referencia explícita, esta vez utilizando "~" como acceso directo a "mi directorio personal". Una vez más, $PATH no se utiliza.

(Unrelated ...) En source shell-command requiere una referencia específica a un archivo, y hace que el shell lea y ejecute todos los comandos de ese archivo. (Por ejemplo, si cambias tu archivo "bash profile" y quieres incorporarlo sin volver a iniciar sesión, esta es una forma de hacerlo).

0 votos

Fíjese en el espacio después del . En la pregunta. El problema no está relacionado con la ruta, sino con el origen del archivo, como en la otra respuesta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X