Estoy confundido acerca de que los permisos de ejecución de archivos no se comporten como esperaba. Probablemente porque mis expectativas son incorrectas. De todas formas:
Tengo un archivo de script, por simplicidad solo se llama s, ubicado en ~/bin. Por el bien de este ejemplo, el archivo contiene solo las siguientes líneas:
#!/bin/zsh
echo "Test";
Muy simple.
Navego hasta el ~/bindirectorio y chmodlos permisos de archivo de sto 400, es decir, solo lectura para mí. Sin permiso de ejecución. Entonces trato de ejecutar el script ingresando su ruta, dando esto:
% ./s
zsh: permission denied: ./s
Hasta aquí todo bien. El archivo no se puede ejecutar debido a los permisos incorrectos. El aumento de permisos hasta 500(permiso de ejecución concedido) también funciona bien: con estos permisos, el archivo se ejecuta bien:
% ./s
Test
Todo esto es como se esperaba. Pero luego vuelvo a los chmodpermisos 400(ejecutar el permiso nuevamente), intentando sourceel archivo, y esto sucede:
% source s
Test
Aunque los permisos son 400, el script se ejecuta.
Así que aquí está mi pregunta: ¿por qué ./sfalla (como debería) pero se source sejecuta normalmente? ¿Esto no vence el propósito completo del permiso de ejecución?
Con 400permisos, sh sy zsh stambién trabajo.
Estoy seguro de que estoy haciendo o entendiendo algo horriblemente mal en alguna parte. Puede señalar a alguien dónde a mí, y explicar la diferencia entre ./s, source s, sh sy zsh s?

cat ssolo imprime el contenido del archivo.cat s | zshlos pasazshe imprimeTest.