Я розгублений щодо дозволу на виконання файлів, який веде себе не так, як я очікував. Можливо, тому, що мої сподівання помиляються. У будь-якому випадку:
У мене є файл сценарію, для простоти просто називається s, розташований в ~/bin. Для цього прикладу файл містить лише такі рядки:
#!/bin/zsh
echo "Test";
Дуже просто.
Я переходжу до ~/binкаталогу, і chmodдозволу на файл sдо 400- тобто для читання лише для мене. Немає дозволу на виконання. Тоді я намагаюся виконати сценарій, ввівши його шлях, даючи це:
% ./s
zsh: permission denied: ./s
Все йде нормально. Файл неможливо виконати через неправильні дозволи. Дозвіл компіляції до 500(виконувати наданий дозвіл) також працює добре - з цими дозволами файл виконує штраф:
% ./s
Test
Це все як очікувалося. Але потім я chmodдозволю назад 400(виконати дозвіл знову), спробуйте sourceфайл, і це станеться:
% source s
Test
Хоча дозволи є 400, сценарій виконується.
Тож ось моє запитання: чому не виходить ./s(як слід), а source sвиконується нормально? Це не перешкоджає цілі дозволу на виконання?
За 400дозволами, sh sа zsh sтакож працювати.
Я впевнений, що десь роблю або розумію щось жахливо неправильне. Може хто - то точка, де мені і пояснити різницю між ./s, source s, sh sі zsh s?