Для пользователя Linux командная строка Windows кажется чем-то непривычным и неудобным. С появлением WSL казалось, что проблема использования Bash решена, но запуск виртуальной машины требует времени, да и пути в WSL отличаются от Windows. Плюс скорость файловых операций на виртуальной машине хуже.
Ещё есть возможность использовать Bash через MSYS2, но мне хотелось найти что-то более компактное и легковесное, а также простое в настройке и установке.
Так как я часто использовал Linux на роутерах, то познакомился с BusyBox, набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Оказалось, есть версия BusyBox для Windows. В 2020 году появился Windows Terminal, а в нем есть возможность создавать вкладку с запуском конкретной программы.
![Пример вкладки Bash Пример вкладки Bash](https://habrastorage.org/getpro/habr/upload_files/44b/8e3/59b/44b8e359b7b1377340f6975b97fb7faf.png)
Сложив эти два факта, пришла очевидная мысль, использовать BusyBox, содержащий в себе Bash, в Windows Terminal как отдельную консоль.
![Список программ входящих в BusyBox Список программ входящих в BusyBox](https://habrastorage.org/getpro/habr/upload_files/01d/969/099/01d96909985e8f6c399dfbe1fc55f0b6.png)
Для этого необходимо скачать BusyBox 64, и я, например положил файл в C:/Program Files/Busybox
. А дальше создать новый профиль Windows Terminal и поменять его имя на Bash и указать команду для запуска как C:/Program Files/Busybox/busybox64.exe bash
![Профиль для Bash Профиль для Bash](https://habrastorage.org/getpro/habr/upload_files/082/cbb/56b/082cbb56ba74d51e799bc82c24b1af47.png)
У этого подхода был один минус, при запуске терминала не из конкретной папки, а из ярлыка на рабочем столе или из панели задач.
![Запуск терминала из конкретной папки Запуск терминала из конкретной папки](https://habrastorage.org/getpro/habr/upload_files/1c7/eed/1b2/1c7eed1b2f5824f44e41edfc25942f8b.png)
То адрес рабочей папки был C:/Windows/System32
, и если случайно ввести команду удаления или создания файла, то мы портим важную системную папку. Обойти возможно используя аналог .bashrc
или /etc/profile
или .profile
.
![](https://habrastorage.org/getpro/habr/upload_files/9e1/6c5/e3b/9e16c5e3bf7ed85caf056f63771547c2.png)
Но просто создать файл .profile
мало, BusyBox для Windows их не считывает, для этого необходимо добавить путь к этому файлу в ENV
в “Переменные среды”.
![](https://habrastorage.org/getpro/habr/upload_files/590/8db/81e/5908db81e4f55a52c91b4e1e766fd9ac.png)
Теперь мы можем написать скрипт, который будет настраивать рабочую директорию при запуске консоли.
#!/bin/bash
domain=$(echo $PWD | tr '[:upper:]' '[:lower:]')
if [ $domain = "c:/windows/system32" ]; then
cd $HOME
fi
Теперь если мы запустили терминал из ярлыка или панели задач, то рабочей директорией по умолчанию становится домашняя папка пользователя, а если мы запускаем из конкретной папки то, она и становится рабочей директорией.
Мы получили Bash в Windows Terminal с удобной начальной директорией.