Сегодня я получил очередной вопрос читателя по поводу заметки Автоматическая настройка Live-USB Ubuntu. Этот вопрос, как и остальные, сводились к одной проблеме: не получается запустить скрипт со съёмного накопителя. Так как с этой проблемой столкнулся не один читатель, рассмотрю её причину и решение.
Предполагаю, что текст скрипта не содержит ошибок, препятствующих его выполнению, сохранён в файле в файловой системе съёмного накопителя (для примера файл /path/to/config.sh
), к этому файлу обеспечен доступ. Причём вместо съёмного накопителя может рассматриваться и внутренний - разницы для решения вопроса здесь нет.
Каждый пользователь операционной системы на базе ядра Linux знает о необходимости корректного задания прав на исполняемые файлы: чтобы сделать файл исполняемым, надо задать право выполнения для пользователя, который будет запускать файл. Для этого используется следующая команда.
chmod +x /path/to/config.sh
Теперь файл /path/to/config.sh
стал исполняемым для пользователя.
Однако этот вариант будет работать в тех случаях, если файл хранится в файловой системе, поддерживающей Unix права доступа к файлам и каталогам. Часто пользователи Live-USB Ubuntu используют эту операционную систему параллельно с операционной системой Microsoft Windows. При этом файловые системы, используемые на съёмных накопителях - FAT, FAT32 или NTFS, что даёт беспроблемную возможность использовать накопители как в Microsoft Windows, так и в Ubuntu.
Но файловые системы FAT, FAT32 и NTFS не поддерживают Unix права доступа к файлам и каталогам. Поэтому использование команды chmod
не даст результата.
Поэтому предлагаю два варианта решения:
- хранить файл Shell скрипта на съёмном накопители с файловой системой, поддерживающей Unix права доступа, и запускать скрипт привычными способом: в терминале или средствами графического оконного менеджера;
- продолжить использовать съёмный накопитель с уже существующей на нём файловой системой, но запускать скрипт в терминале, используя команду
sh
: sh /path/to/config.sh
.
Для запуска Bash скрипта вместо команды sh
используйте bash
.
Считаю ещё одну проблему начинающих пользователей операционных систем на базе ядра Linux решённой.