Bash-скрипты в Windows 10: как создать и запустить

Введение
Bash на Windows (WSL) позволяет запускать Linux-команды и скрипты в Windows 10. Это удобно для разработчиков, системных администраторов и автоматизаторов. Однако нужно учитывать различия в окончаниях строк, путях к файлам и доступе к нативным Windows-программам.
Определение: WSL — подсистема Windows для Linux, которая запускает Linux-бинарники непосредственно в Windows.
Важно: скрипты, написанные в Windows-редакторах, могут иметь несовместимые символы конца строки. Это ломает интерпретацию в Bash.
Как написать Bash-скрипт в Windows 10
Лучший способ — писать скрипт прямо в Bash-среде. В WSL по умолчанию доступны редакторы vi и nano. Vi мощнее. Nano проще для новичков.
Пример создания файла в nano:
nano ~/myscript.sh«~» обозначает домашнюю папку пользователя: /home/username/myscript.sh.
Каждый Bash-скрипт обычно начинается с шебанга:
#!/bin/bashДобавляйте команды по одной на строку. Комментарии начинайте с «#». Пример простого скрипта «hello world»:
#!/bin/bash
# set the STRING variable
STRING="Hello World!"
# print the contents of the variable on screen
echo $STRINGЕсли вы используете Nano, сохраните файл нажатием Ctrl+O, подтвердите Enter, затем выйдите Ctrl+X.

Примечание: если вы всё же редактируете файл в Windows, используйте редактор, который может сохранить файл с UNIX-оканчанием строки. В Notepad++ выберите Редактировать > Преобразование EOL > Формат UNIX/OSX. Это устраняет проблему CRLF vs LF.
Важно: из среды Bash вы не можете напрямую запускать нативные Windows-программы как Linux-бинарники. Можно вызывать некоторые исполняемые файлы через встроенные механизмы WSL/interop, но это отдельная тема.
Сделать скрипт исполняемым и запустить его
Чтобы запускать скрипт как программу, дайте ему право на исполнение:
chmod +x ~/myscript.shЗапуск по пути:
~/myscript.shЕсли файл в текущем каталоге:
./myscript.sh
Если скрипт выводит текст или взаимодействует с терминалом, окно Bash будет вести себя так же, как в обычном Linux.

Работа с файлами Windows в Bash-скрипте
Файловая система Windows доступна под /mnt. Диск C: монтируется как /mnt/c. Например, Windows-путь C:\Users\Bob\Downloads\test.txt в Bash выглядит так:
/mnt/c/Users/Bob/Downloads/test.txtИспользуйте этот путь в скриптах, если нужно читать или записывать файлы в пространствах, доступных Windows-приложениям.
Примечание о разрешениях: файлы в /mnt/* наследуют поведения файловой системы Windows. Будьте внимательны с правами и разделением переносимых символов.
Встроить Bash-команды в Batch или PowerShell
Если у вас есть batch-файл (.bat) или скрипт PowerShell, вы можете запускать отдельные Bash-команды с помощью:
bash -c "command"Пример в CMD или PowerShell:
bash -c "ls -la /mnt/c/Users/Bob"Окно Bash появится на время исполнения команды. Это удобно для интеграции отдельных Linux-команд в существующие Windows-процессы или ярлыки.
Обновление: если у вас установлено несколько дистрибутивов Linux, управлять ними можно через wslconfig. Он определяет, какой дистрибутив будет запускаться по умолчанию при вызове bash -c.

Создать ярлык для запуска Bash-скрипта из Windows
Чтобы запускать скрипт из интерфейса Windows, создайте обычный ярлык и в поле «Объект» укажите команду:
bash -c "~/myscript.sh"Или используйте полный путь:
bash -c "/home/username/myscript.sh"Это запустит ваш Bash-скрипт в WSL при двойном щелчке на ярлыке.
Альтернативные подходы
- Git Bash: включает Bash-подобную среду с множеством GNU-утилит. Подходит для простых задач, не требует WSL.
- Cygwin: эмуляция POSIX-совместимости для Windows; хорош для комплексных сценариев, но требует установки и конфигурации.
- WSL2: полная виртуализация с лучшей совместимостью и производительностью для файловых операций. Лучше для контейнерных рабочих нагрузок и инструментов разработки.
Когда выбрать что:
- Нужна глубокая интеграция с Linux-утилитами и производительность: WSL2.
- Только командная среда для git и простых скриптов: Git Bash.
- Потребность в POSIX-инструментах на уровне системы: Cygwin.
Когда это не сработает
- Скрипт зависит от специфичных для Linux ядровых возможностей, которых нет в WSL1.
- Скрипт ожидает нативных устройств или драйверов Windows.
- Файлы имеют CRLF и не конвертированы в LF — скрипт не исполнится.
- Нативные Windows GUI-программы нельзя запускать прямо как Linux-утилиты (потребуется межоперируемость).
Совместимость и миграция
Короткая матрица совместимости:
- WSL1: легковесный, медленнее в работе с файлами /mnt; совместимость инструментов ограничена.
- WSL2: использует виртуальную машину, полнее поддерживает Linux-бинарники и Docker; рекомендован для большинства сценариев.
- Git Bash: минимальная совместимость, лёгкая установка.
- Cygwin: широкая функциональность, но требует адаптации путей/оболочки.
Миграционные советы:
- При переходе на WSL2 проверьте пути к файлам и разрешения.
- Тестируйте скрипты в средах CI до массового развертывания.
Безопасность и жёсткие настройки
- Ограничьте права на исполняемые скрипты (chmod 700 для личных сценариев).
- Не храните секреты в скриптах; используйте менеджеры секретов или переменные окружения, защищённые правами доступа.
- Проверяйте вводимые данные, особенно при работе с файлами Windows (путь может быть подменён).
- Если скрипт запускается от имени администратора, удостоверьтесь, что код прошёл аудит.
Шаблоны и шпаргалка (cheat sheet)
Быстрые команды:
# создать файл в nano
nano ~/myscript.sh
# сделать исполняемым
chmod +x ~/myscript.sh
# запустить (домашняя папка)
~/myscript.sh
# запустить из Windows CMD/PowerShell
bash -c "~/myscript.sh"
# путь к файлу Windows
/mnt/c/Users/Bob/Downloads/test.txtШаблон скрипта:
#!/bin/bash
# краткое описание: делает X
# автор: ваше имя
# версия: 1.0
set -euo pipefail
IFS=$'\n\t'
# конфигурация
FILE=/mnt/c/Users/Bob/Downloads/test.txt
# тело
if [[ -f "$FILE" ]]; then
echo "Файл найден"
else
echo "Файл не найден"
fiКлючевые флаги: set -e остановит выполнение при ошибке; set -u предупредит об использовании неустановленных переменных.
Ролевые чек-листы
Разработчик:
- Писать и тестировать скрипт в WSL.
- Проверять окончания строк (LF).
- Добавлять unit-тесты по возможности.
Системный администратор:
- Проверить права доступа перед развертыванием.
- Логировать выполнение и ошибки.
- Планировать откат/rollback.
Power user:
- Создать ярлык в Windows для быстрого запуска.
- Использовать bash -c для интеграции с задачами планировщика.
Ментальные модели и эвристики
- Модель «двух миров»: думайте о Windows и Linux как о смежных, но разных средах. Конвертируйте пути и окончания строк при переходах.
- Эвристика: если поведение скрипта неверно — сначала проверяйте окончания строк, затем права доступа, затем зависимости.
Критерии приёмки
- Скрипт запускается в WSL без ошибок на целевом дистрибутиве.
- Скрипт корректно обрабатывает пути /mnt/* к файлам Windows.
- Нет утечек секретов, права ограничены.
Глоссарий (по одной строке)
- WSL — подсистема Windows для запуска Linux-бинарников.
- Bash — командная оболочка и язык сценариев для UNIX-подобных систем.
- CRLF/LF — разные символы окончания строки для Windows и UNIX.
Частые ошибки и как их исправить
- Символы конца строки (CRLF): преобразуйте в LF через dos2unix или редактор.
- Ошибка «permission denied»: используйте chmod +x и проверьте владельца файла.
- Неправильный путь к файлу Windows: используйте /mnt/c/… вместо C:…
Короткое объявление (для командной рассылки, 100–200 слов)
Новый рабочий процесс: теперь вы можете писать и запускать Bash-скрипты непосредственно в Windows 10 через WSL. Пишите скрипты в среде Bash, избегайте CRLF, делайте файлы исполняемыми через chmod +x и запускайте их напрямую или через bash -c из batch/PowerShell. Для доступа к файлам Windows используйте путь /mnt/c/Users/…, а для интеграции с рабочими процессами — ярлыки Windows, указывающие на bash -c. Для более сложных сценариев рассмотрите WSL2, Git Bash или Cygwin.
Итог
Bash в Windows 10 упрощает перенос Linux-рабочих процессов на Windows. Самый надёжный путь — писать и тестировать скрипты в самой Bash-среде, следить за окончаниями строк и правами доступа, и использовать bash -c для интеграции с Windows-инструментами.
Важно: всегда тестируйте скрипты в целевой среде и следите за безопасностью.
Краткие ключевые выводы перечислены внизу.
Похожие материалы
Safari на Apple Watch: как открыть веб-страницу
Конвертация единиц в Windows 11
Замена экрана смартфона — как сделать самому
USB‑ключ для ремонта и обслуживания ПК
iCloud на Windows: установка и синхронизация