Иногда при запуске .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):
Как включить Bash в Windows 10
-rwxr-xr-x 1 root root 415 Apr 26 2018 /root/bin/vpn_route.sh
Чтобы установить права на выполнение файла выполните команду вида:
chmod +x /путь/до/файла.sh
Ещё одна возможная причина, в начале файла *.sh пропущен шебанг:
#!/bin/sh
Строка шебанга имеет следующий формат:
#!interpreter [optional-arg]
interpreter должен быть абсолютным путём к исполняемому файлу программы (если интерпретатором является скрипт, он тоже должен начинаться с шебанга). Необязательный optional-arg должен иметь формат единственного аргумента (по причинам переносимости он не должен содержать пробелы). Пробел после #! является опциональным.
Связанные статьи:
- Как использовать echo вместе с sudo (97.4%)
- sudo: cd: command not found (РЕШЕНО) (97.4%)
- Решение проблемы с ошибкой fatal error: stdlib.h: Нет такого файла или каталога (52.7%)
- Решение проблемы с ошибкой make: x86_64-w64-mingw32-gcc: Команда не найдена (52.7%)
- Решение проблемы с ошибкой fatal error: ffi.h: Нет такого файла или каталога (52.7%)
- Xfce загружается без Панели задач и кнопки Пуск (РЕШЕНО) (RANDOM — 2.7%)
Источник: zalinux.ru
Ошибка /bin/bash^M: bad interpreter: No such file or directory при запуске скриптов
Как видно из текста ошибки, при запуске скрипта вместо стандартного шелла /bin/bash скрипт пытается запустить его из директории /bin/bash^M и ожидаемо выдает ошибку, потому что такого пути не существует. Все дело в том, что ^M — это символ возврата каретки (окончания строки), который обычно используется на Windows системах. По всей видимости, данный скрипт редактировался каким-либо текстовым редактором, в настройках которого был выставлен режим Windows (а не Linux) и из-за этого, при запуске скрипта получается такая ошибка.
Как запускать программы Linux в Windows при помощи Bash эмулятора
Как исправить ошибку (способ 1: очень быстрый)
Допустим, наш скрипт, при запуске которого мы получаем ошибку будет называться script.sh .
1) Делаем его резервную копию, чтобы иметь возможность восстановить работоспособность, если что-либо пойдет не так.
2) Запускаем следующую команду:
sed -i -e ‘s/r$//’ script.sh
Она должна заменить все символы переноса строки Windows на те, которые используются на Linux системах. Способ не совсем универсальный, поэтому иногда может не сработать.
3) После выполнения данной команды, пытаемся запустить на скрипт script.sh и проверить работоспособность. Если не помогло, то восстанавливаем оригинал из резервной копии и переходим ко второму способу.
Как исправить ошибку (способ 2: медленный, но очень надежный)
Если первый способ не помог, либо если вы часто сталкиваетесь с такой ошибкой, то можно воспользоваться специальной утилитой dos2unix , которая как раз подходит для таких случаев
1) Делаем резервную копию script.sh , чтобы восстановить его в случае проблем.
2) Устанавливаем утилиту dos2unix
sudo apt update sudo apt install dos2unix
3) Выполняем команду:
dos2unix script.sh dos2unix: converting file script.sh to Unix format.
4) После выполнения данной команды, пытаемся запустить на скрипт script.sh и проверить работоспособность.
Источник: pc.ru
Ubuntu 20.04.2 nautilus не запускается bash-скрипты, как решить?
P.S. суть в том чтобы пользователь запускал скрипт не заходя в терминал (для рядового сотрудника слишком сложно),
который будет запускать TeamviewerQuickSupport.
- Вопрос задан более года назад
- 259 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
Системный администратор
Почему бы тебе просто не сделать ярлык (файл *.desktop ) для запуска teamviewer_qs
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Categories=Network; Name=TeamViewer QuickSupport Comment=Remote control solution. Exec=/home/path/to/teamviewerqs/tv_bin/script/teamviewer Icon=/home/path/to/teamviewerqs/tv_bin/desktop/teamviewer_48.png
Более того, при первом запуске он автоматически создаётся, так что можешь просто скопировать его на видное место.
Источник: qna.habr.com