El . el mandato es un alias para la fuente de modo que los dos comandos son realmente
./venv/bin/activate
y
source venv/bin/activate
También tenga en cuenta que para que el sistema de proceso de un archivo que necesita la ruta de acceso absoluta, es decir un principio con /
Tanto los nombres de los archivos aquí son relativos es decir que sólo puede ser entendido con el conocimiento del directorio actual que es la variable $(CWD)
Los dos nombres de archivo expandir $(CWD)/./venv/bin/activate y $(CWD)/venv/bin/activate . es el directorio actual y por lo tanto son de $(CWD)/venv/bin/activate
La diferencia entre ejecutar un comando directamente o a través de la fuente es que si se ejecuta de manera directa como en el primer comando bash crea un nuevo sub shell y ejecuta el comando en el que los comandos de la secuencia de comandos sólo afectan a la sub shell y cuando la secuencia de comandos se rasga que sub shell está cerrado y todos los cambios del medio ambiente se han perdido. fuente, sin embargo, se ejecuta el comando en el shell actual y los cambios en el medio ambiente siguen siendo después de que finalice la secuencia de comandos como si los comandos de la secuencia de comandos se escriben en el shell actual.
El activar la secuencia de comandos (supongo que es de Python entorno virtual de administración) funciona cambiando la $RUTA, por lo que la correcta ambiente python se encuentran cuando se utilizan python script.py
Para hacer esto usted necesita para alterar su actual $PATH y así activar el script debe ejecutarse utilizando como fuente.
Ver también https://askubuntu.com/questions/182012/is-there-a-difference-between-and-source-in-bash-after-all y https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-vs-sourcing-it
No es que la ejecución de un comando requiere el comando para que sea ejecutable. El comando a ejecutar es siempre un archivo y ese archivo tiene que ser marcado como ejecutable por el sistema. Que es el ejecutable de la bandera tiene que ser establecido en los permisos de archivo que se puede ver por ls -l venv/bin/activate
fuente, sin embargo es en el shell actual y simplemente lee el archivo de texto y, a continuación, ejecuta los comandos que se ve, por Lo que este archivo sólo debe ser legible. Para más información sobre que ver https://unix.stackexchange.com/questions/291404/why-does-bashs-source-not-need-the-execution-bit me gusta esta respuesta
Es más de una conveniencia cosa: Dejar que el sistema funcione para mí directamente si el bit está establecido, de lo contrario tengo que hacerlo indirectamente