Запуск Shell скрипта со съёмного накопителя в Live-USB Ubuntu

 

 BashShellсниппет

Сегодня я получил очередной вопрос читателя по поводу заметки Автоматическая настройка 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 не даст результата.

Поэтому предлагаю два варианта решения:

  1. хранить файл Shell скрипта на съёмном накопители с файловой системой, поддерживающей Unix права доступа, и запускать скрипт привычными способом: в терминале или средствами графического оконного менеджера;
  2. продолжить использовать съёмный накопитель с уже существующей на нём файловой системой, но запускать скрипт в терминале, используя команду sh: sh /path/to/config.sh.

Для запуска Bash скрипта вместо команды sh используйте bash.

Считаю ещё одну проблему начинающих пользователей операционных систем на базе ядра Linux решённой.