Гид по технологиям

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

6 min read Разработка Обновлено 19 Dec 2025
Bash-скрипты в Windows 10: создание и запуск
Bash-скрипты в Windows 10: создание и запуск

Инструкция: создание и запуск 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.

Окно Notepad++ с опцией выбора формата окончания строки UNIX/OSX

Примечание: если вы всё же редактируете файл в Windows, используйте редактор, который может сохранить файл с UNIX-оканчанием строки. В Notepad++ выберите Редактировать > Преобразование EOL > Формат UNIX/OSX. Это устраняет проблему CRLF vs LF.

Важно: из среды Bash вы не можете напрямую запускать нативные Windows-программы как Linux-бинарники. Можно вызывать некоторые исполняемые файлы через встроенные механизмы WSL/interop, но это отдельная тема.

Сделать скрипт исполняемым и запустить его

Чтобы запускать скрипт как программу, дайте ему право на исполнение:

chmod +x ~/myscript.sh

Запуск по пути:

~/myscript.sh

Если файл в текущем каталоге:

./myscript.sh

Пример выполнения chmod в терминале Bash

Если скрипт выводит текст или взаимодействует с терминалом, окно Bash будет вести себя так же, как в обычном Linux.

Запуск Bash-скрипта в терминале

Работа с файлами 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.

Выбор дистрибутива WSL через wslconfig

Создать ярлык для запуска Bash-скрипта из Windows

Чтобы запускать скрипт из интерфейса Windows, создайте обычный ярлык и в поле «Объект» укажите команду:

bash -c "~/myscript.sh"

Или используйте полный путь:

bash -c "/home/username/myscript.sh"

Это запустит ваш Bash-скрипт в WSL при двойном щелчке на ярлыке.

Альтернативные подходы

  1. Git Bash: включает Bash-подобную среду с множеством GNU-утилит. Подходит для простых задач, не требует WSL.
  2. Cygwin: эмуляция POSIX-совместимости для Windows; хорош для комплексных сценариев, но требует установки и конфигурации.
  3. 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-инструментами.

Важно: всегда тестируйте скрипты в целевой среде и следите за безопасностью.


Краткие ключевые выводы перечислены внизу.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Safari на Apple Watch: как открыть веб-страницу
Apple Watch

Safari на Apple Watch: как открыть веб-страницу

Конвертация единиц в Windows 11
Инструкции

Конвертация единиц в Windows 11

Замена экрана смартфона — как сделать самому
Ремонт телефона

Замена экрана смартфона — как сделать самому

USB‑ключ для ремонта и обслуживания ПК
Инструменты

USB‑ключ для ремонта и обслуживания ПК

iCloud на Windows: установка и синхронизация
Руководство

iCloud на Windows: установка и синхронизация

Ограничить неудачные входы в Windows 10
Безопасность

Ограничить неудачные входы в Windows 10