Beklediğim gibi davranmayan dosya izinlerini yürütme konusunda kafam karıştı. Muhtemelen beklentilerim yanlış olduğu için. Neyse:
Bir komut dosyası var, basitlik için sadece denir s, bulunur ~/bin. Bu örnek uğruna, dosya sadece aşağıdaki satırları içerir:
#!/bin/zsh
echo "Test";
Çok basit.
Ben gitmek ~/bindizine ve chmoddosya izinleri siçin 400- yani salt okunur sadece benim için. Yürütme izni yok. O zaman ben komut dosyasını yolunu girerek yürütmeyi deneyin, bu vererek:
% ./s
zsh: permission denied: ./s
Çok uzak çok iyi. Dosya yanlış izinler nedeniyle yürütülemiyor. 500(İzin verilen yürütme) değerine kadar çarpma izinleri de iyi çalışır - bu izinlerle dosya iyi çalışır:
% ./s
Test
Bunların hepsi beklendiği gibi. Ama sonra chmodgeri izin 400(tekrar kapalı izin yürütmek), sourcedosyayı denemek ve bu olur:
% source s
Test
İzinler olmasına rağmen 400, komut dosyası yürütülür.
Öyleyse sorum şu: neden ./sbaşarısız oluyor (olması gerektiği gibi) ama source snormal çalışıyor? Bu, yürütme izninin tüm amacını bozmaz mı?
At 400izinleri sh sve zsh sayrıca çalışır.
Eminim ya bir yerlerde korkunç bir yanlışlık yapıyorum ya da anlıyorum. Birisi noktası dışarı nerede bana Can ve arasındaki farkı açıklamak ./s, source s, sh sve zsh s?