TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #762 10.7K
В linux существует куча всяких оболочек, я имею в виду не bash/zsh, а конкретно их типы: login, non-login, interactive, restricted и т.п.

Очередной зоопарк с которым особо никто не разбирается. Давай закроем эту дырку. ㅤ

Interactive Shell — ну тут ежу понятно, ты вводишь в терминале буковки, а оно тебе в ответ что-то выдаёт. Интерактивно? Конечно! По умолчанию именно этот тип стартует при запуске терминала.

На этом можно и закончить, но хуй там плавал, поехали дальше.

Non-Interactive — Логично? Логично! Этот тип используется в основном для выполнения скриптов или задач в кроне.

Когда ты запускаешь скрипт: ./bashdays.sh, интерактивная оболочка смотрит в скрипт и такая — ага, вижу shebang (#!/bin/sh) Запускаю интерпретатор sh.

Это и будет считаться не интерактивной оболочкой, все запустится где-то там внутри, в кишках.

Что интересно, при запуске в такой оболочке все твои настройки в .profile/.bashrc игнорируются.


Почему? Из-за совместимости, вдруг ты в .bashrc нахуячил своих переменных и команд, а потом решил этот скрипт перенести на другую машину где нет этих переменных и команд. Такие дела.

И в большинстве случаев здесь кроется проблема с выполнением скрипта из крона. Ручками запускаешь — работает. А из крона — нет! Потому что проигнорированы твои поделки в .bashrc и profile.

Как вариант, пиши #!/bin/bash или в кроне явно указывай как запускать твой скрипт: bash script.sh

Login = Запускается при входе в систему (например через ssh). Оболочка входа перечитывает файлы: /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile.

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

echo $0


Если вывод начинается со знака «-» это и есть login shell.

Ну или так:

[[ $- == *i* ]] && echo "Interactive" || echo "Non-Interactive"


Non-Login = запускается из существующей сессии (например, внутри терминала из GUI). То есть не требуется авторизация. Не читает ~/.bash_profile вместо этого использует ~/.bashrc.

Нипонятно… давай на примере:

1. Ты приходишь домой с работы.
2. Зашел через парадную дверь Login Shell.
3. Снимаешь трусы, всё происходит по определённым правилам (файл .bash_profile).

Что происходит:

- Ты готов к долгому пребыванию дома.
- Тебя «встречают» файлы конфигурации входа (.bash_profile).

4. Ты внутри дома, и открываешь окно, чтобы покурить.
5. Non-Login Shell = это как открыть окно внутри дома.
6. Ты не снимаешь трусы заново — ты уже дома!

Файлы .bash_profile не используются, потому что ты уже «внутри». Вместо этого, ты используешь «внутренние» правила дома (это как .bashrc).

Login Shell: Зашёл в дом через дверь — загружается .bash_profile.

Non-Login Shell: Открыл окно, уже находясь в доме — загружается .bashrc.

Restricted Shell = ограниченная оболочка, кастрированные команды, закрученные гайки. Обычно делают для безопасности, чтобы криворукий юзер ничо не сломал.

Возможно ты слышал про rbash, это оно и есть.


System Shell = системная оболочка, используется системой для выполнения фоновых задач и скриптов инициализации (init, systemd). Зачастую это /bin/sh.

Subshell = Подоболочка, создается при выполнении скрипта или команд в скобках () или с помощью bash -c. Подоболочка наследует переменные родительской оболочки, но не влияет на них после завершения.

Например: (cd /tmp && ls)

Есть еще Interactive Login, Interactive Non-Login.

1. Интерактивная оболочка, которая требует входа пользователя (например, через SSH).

2. Интерактивная оболочка, открытая из GUI терминала, но не требует аутентификации пользователя.

➡️ Почитать про shebang
➡️ Почитать про файлы .profile/bashrc и т.п.

—

Да и вроде всё, закончился зоопарк, по крайней мере про другие типа оболочек я не слышал, либо забыл нахуй.

Напиши в комменты если что-то можно сюда еще приплести, будет интересно.


Увидимся! Шестидневная рабочая неделька обещает быть томной.

tags: #linux
—
🔔 @bashdays➡️ @gitgate
More from @bashdays
  1. Sep 24, 2026Post #1565
  2. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  3. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  4. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  5. Sep 11, 2026🤖 DevOps в эпоху AI трансформации: что работает уже сейчас! 17 сентября Сбер собирает Dev…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →