Иногда при запуске .sh файла, который представляет собой Bash скрипт, может возникнуть ошибка. К примеру, запускается скрипт в файле check-aur.sh:
./check-aur.sh
Получен ошибка:
bash: ./check-aur.sh: Отказано в доступе
Подобную ошибку можно исправить, если перед запускаемым скриптом указать желаемый интерпретатор, то есть bash:
bash ./check-aur.sh
Почему возникает ошибка «bash: ./....sh: Отказано в доступе»
Вы могли заметить, что некоторые файлы можно запустить и без указания bash в начале команды. Для этого необходимо соблюдение двух условий:
- в разрешения файла должно быть разрешение на выполнение
- в самом файле вверху должен быть шебанг
Проверить, есть ли разрешения на исполнение файла можно командой ls:
ls -l /путь/до/файла.sh
Должно быть что-то вроде такого (должны быть x):
-rwxr-xr-x 1 root root 415 Apr 26 2018 /root/bin/vpn_route.sh
Чтобы установить права на выполнение файла выполните команду вида:
chmod +x /путь/до/файла.sh
Смотрите также статью «Команда chmod: как поменять права доступа к файлам и директориям».
Ещё одна возможная причина, в начале файла *.sh пропущен шебанг:
#!/bin/sh
Строка шебанга имеет следующий формат:
#!interpreter [optional-arg]
interpreter должен быть абсолютным путём к исполняемому файлу программы (если интерпретатором является скрипт, он тоже должен начинаться с шебанга). Необязательный optional-arg должен иметь формат единственного аргумента (по причинам переносимости он не должен содержать пробелы). Пробел после #! является опциональным.
Связанные статьи:
- Как использовать echo вместе с sudo (97.8%)
- sudo: cd: command not found (РЕШЕНО) (97.8%)
- Решение проблемы с ошибкой fatal error: stdlib.h: Нет такого файла или каталога (52.3%)
- Решение проблемы с ошибкой make: x86_64-w64-mingw32-gcc: Команда не найдена (52.3%)
- Решение проблемы с ошибкой fatal error: ffi.h: Нет такого файла или каталога (52.3%)
- Google Chrome не сохраняет пароли (РЕШЕНО) (RANDOM - 2.3%)
Здравствуйте! Получаю это сообщение даже если есть строка с шебанг.
Возможно, у вас что-то в этом духе.
Там человек вводил в терминал
и получал ошибку, что доступ запрещён.
Если не так, то напишите подробнее, как именно пытаетесь запустить, какое в точности сообщение об ошибке и какая первая строчка файла.