Як запускати декілька оболонок в 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"

Ця команда дозволить тобі:

  1. оновити пакети всередині контейнера
  2. встановити Zsh і Fish
  3. запустити 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

Рекомендації

  1. Додавай вгорі shell-скриптів #!/bin/bash або #!/bin/sh, щоб явно вказати оболонку.
  2. Для перевірки сумісності скриптів використовуй ShellCheck — він підкаже синтаксичні помилки.
  3. Конфігураційні файли для кожного shell різні:

.bashrc — для Bash

.zshrc — для Zsh

config.fish — для Fish

Наостанок

Тепер у твоєму розпорядженні не просто один термінал, а ціла армія оболонок. Bash, Zsh, Fish — кожне з них має свої суперсили.

Але що робити, якщо вже навчився працювати з оболонками, а хочеться ще глибше опанувати Linux? Звичайно що йти на курси від ITEDU!

У нас є навчання з Linux на будь-який смак та рівень підготовки. Переходь в каталог та обирай.

Залишити відповідь

Дякуємо, що поділились