Як запускати декілька оболонок в Linux?

У більшості дистрибутивів Linux використовується Bash.
Але якщо працюєш із shell-скриптами, тестуєш сумісність або просто хочеш спробувати альтернативи — варто знати, як запускати інші оболонки: Zsh, Fish, Dash, Ksh, Tcsh, Mksh, Yash, BusyBox.
Спосіб 1. Docker: ізольоване середовище без змін у системі
Найзручніший варіант для експериментів — використати контейнери Docker. Вони дозволяють запускати будь-яку оболонку, не торкаючись твоєї основної системи.
Швидкий запуск окремої оболонки
docker run --rm -it ubuntu bash # Bash
docker run --rm -it ubuntu zsh # Zsh
docker run --rm -it ubuntu fish # Fish
Контейнер створюється, запускає оболонку, і сам видаляється після виходу (--rm
).
Запуск одразу з кількома оболонками
docker run --rm -it ubuntu bash -c "apt update && apt install -y zsh fish && zsh"
Ця команда дозволить тобі:
- оновити пакети всередині контейнера
- встановити Zsh і Fish
- запустити Zsh як інтерактивну оболонку
Твої основні файли та середовище при цьому не зміняться.
Якщо потрібно повторювати запуск — створи власний Docker-образ
Крок 1: створення Dockerfile
mkdir multi-shell-container
cd multi-shell-container
nano Dockerfile
Dockerfile
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
zsh \
fish \
dash \
ksh \
tcsh \
mksh \
yash \
busybox \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /test
CMD ["bash"]
Крок 2: збірка образу
docker build -t multi-shell .
Крок 3: запуск з вибраною оболонкою
docker run --rm -it multi-shell # Bash (за замовчуванням)
docker run --rm -it multi-shell zsh # Zsh
docker run --rm -it multi-shell fish # Fish
docker run --rm -it multi-shell dash # Dash
docker run --rm -it multi-shell tcsh # Tcsh
docker run --rm -it multi-shell busybox # BusyBox
Параметр --rm
автоматично видаляє контейнер після завершення сесії. Якщо хочеш зберегти зміни — прибери цей прапорець.
Спосіб 2. Docker Compose: структура для довготривалих проєктів
Можеш запускати shell-оточення через docker-compose.yml
, що зручно при роботі з кількома сервісами або конфігураціями.
Створення docker-compose.yml
version: "3.8"
services:
multi-shell:
build:
context: .
dockerfile: Dockerfile
image: multi-shell
container_name: multi-shell-container
stdin_open: true
tty: true
command: bash
Команди для запуску
docker-compose build
docker-compose run multi-shell # Bash
docker-compose run multi-shell fish # Fish
docker-compose run multi-shell zsh # Zsh
Щоб змінити оболонку — онови значення command: у YAML.
Видалення контейнера та образу
docker-compose down --rmi all
Спосіб 3. Локальне встановлення оболонок
Якщо Docker не підходить — можна просто встановити потрібні оболонки у свою систему.
Встановлення
sudo apt install zsh fish dash ksh
Заміни apt на менеджера пакетів свого дистрибутива: dnf, yum, pacman тощо.
Запуск
zsh # Запуск Zsh
fish # Запуск Fish
dash # Запуск Dash
ksh # KornShell
Щоб вийти з оболонки та повернутись до попередньої застосуй:
exit
Зміна оболонки за замовчуванням
chsh -s /usr/bin/zsh
Зміни набирають чинності після виходу із сесії або перезавантаження.
Спосіб 4. Віртуальні машини для тестування в інших дистрибутивах
Якщо потрібно запустити оболонки в іншій ОС або дистрибутиві — скористайся віртуалізацією. Це зручно, коли ти тестуєш скрипти на різних версіях Linux.
Не користувався раніше жодним з інструментів для віртуалізації? Переходь на статтю до теми: «8 безоплатних інструментів для віртуалізації з відкритим кодом»
Додатково: запуск окремої команди в іншому shell
Не обов’язково повністю переходити до нової оболонки. Можна просто виконати одну команду:
bash -c 'echo $BASH_VERSION'
zsh -c 'echo $ZSH_VERSION'
fish -c 'echo $FISH_VERSION'
Автоматичне тестування в кількох оболонках (bash-скрипт)
Якщо потрібно перевірити, як одна й та сама команда працює в різних shell — ось приклад скрипта:
#!/bin/bash
for sh in bash zsh fish dash; do
if command -v $sh > /dev/null; then
echo "=== $sh ==="
echo 'echo Hello from $0' | $sh
else
echo "$sh не знайдено"
fi
done
Збережи як test-shells.sh
і зроби виконуваним:
chmod +x test-shells.sh
./test-shells.sh
Рекомендації
- Додавай вгорі shell-скриптів
#!/bin/bash або #!/bin/sh
, щоб явно вказати оболонку. - Для перевірки сумісності скриптів використовуй ShellCheck — він підкаже синтаксичні помилки.
- Конфігураційні файли для кожного shell різні:
.bashrc — для Bash
.zshrc — для Zsh
config.fish — для Fish
Наостанок
Тепер у твоєму розпорядженні не просто один термінал, а ціла армія оболонок. Bash, Zsh, Fish — кожне з них має свої суперсили.
Але що робити, якщо вже навчився працювати з оболонками, а хочеться ще глибше опанувати Linux? Звичайно що йти на курси від ITEDU!
У нас є навчання з Linux на будь-який смак та рівень підготовки. Переходь в каталог та обирай.