ZaLinux.ru

Почему не запускается скрипт, ошибка «bash: ./….sh: Отказано в доступе» (РЕШЕНО)

Иногда при запуске .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 должен иметь формат единственного аргумента (по причинам переносимости он не должен содержать пробелы). Пробел после #! является опциональным.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *