Я не уверен, что права доступа к исполняемому файлу не соответствуют ожиданиям Вероятно, потому что мои ожидания неверны. Тем не мение:
У меня есть файл сценария, для простоты просто называется 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?