¿Por qué no se encuentra este comando?

0

Tengo un script de shell simple:

#!/bin/bash
echo test

Puedo ejecutar el script con éxito como:

./test.sh

y

source ./test.sh

Sin embargo, lo siguiente arroja un error:

. ./test.sh

error:

.: Command not found.

¿Qué podría estar causando el error? Esto funciona en el Capitán pero no en la sierra.

Estoy ejecutando macOS 10.12.3 con el terminal predeterminado.

¡Gracias!

EDITAR: He reescrito la pregunta para simplificarla con un pequeño script de prueba en lugar de mi script de producción real. Esto demuestra que el problema es el entorno de ejecución en lugar del script.

csilk
fuente
Tu guión no tiene sentido. ¿Es eso algo que estás escribiendo o lo copiaste de alguna parte?
Allan
Eso es solo parte del guión, me obliga a usarlo. ./ y no ./ - la secuencia de comandos luego realiza alguna EXPORTACIÓN y establece varios parámetros de ant. Este script ha estado en uso durante muchos años, nunca tuve un problema con él hasta que no lo ejecuté en sierra.
csilk
Falta algo crítico porque la 2ª línea (comienza con "eco") generará un error como está escrito en cualquier sistema * nix desde Linux a Sierra. Dicho esto, nunca he ejecutado un comando que se ejecute con un período inicial y un espacio.
Allan
No quiero publicar el script completo, ya que es propietario, los detalles del comando echo no son relevantes, probablemente solo sea un error de copiar y pegar. Mi punto es que el script hace un chmod -x en sí mismo si lo ejecuta como ./script.sh y luego le dice al usuario que lo ejecute como. ./script.sh que nunca he visto. ./script.sh no funciona antes.
csilk
1
Que liderando . es lo mismo que source (ver ss64.com/bash/source.html ). Intenta llamar al script con source ./script.sh Y ver si funciona. Es probable que el script tenga esa restricción porque está configurando valores para que sean usados ​​por otros comandos. Si source también falla, ¿qué shell estás usando? ¿Y qué aplicación de terminal y versión específica de macOS?
user137369

Respuestas:

0

Resulta que mi shell por defecto estaba configurado a CSH que no es compatible con:

. ./

He cambiado el shell predeterminado para bash y esto ahora funciona. Creo que el shell predeterminado cambió cuando mi empresa creó una imagen del MacBook o ahora es el predeterminado con una instalación nueva de Sierra.

Aceptaré esto como la respuesta después del período de espera de 2 días de intercambio.

csilk
fuente
¿A qué shell está configurado Terminal.app en sus Preferencias?
user3439894
echo $ SHELL dio la salida / bin / csh, la cambié a / bin / bash
csilk
El shell predeterminado utilizado por OS X / macOS como se envía normalmente desde Apple es bash. Si la Terminal estaba configurada en csh, no estaba usando su shell por defecto y tuvo que haber sido modificado por alguien que no sea Apple. Si no lo hiciste, entonces, según lo que dijiste, era la compañía para la que trabajas.
user3439894