Настройка заставки терминала в Linux

О чём эта статья
Заставка терминала — это короткий набор команд, которые выполняются при запуске интерактивной оболочки. Она помогает быстро видеть полезные сведения и придаёт терминалу индивидуальность. В статье подробно рассмотрены практические приёмы, примеры команд, шаблоны скриптов, рекомендации по безопасности и отладке, а также чеклисты для разработчика и администратора.
Почему это полезно
- Быстрый доступ к системной информации без дополнительных команд.
- Улучшение рабочего окружения — эстетика и полезность при каждом запуске терминала.
- Возможность автоматических напоминаний (дата, погода, статус сервисов).
Шаг 1: Найдите файл конфигурации оболочки
Каждая оболочка читает и выполняет свой конфигурационный файл при запуске интерактивной сессии. Расположение обычно в домашней директории пользователя:
- Bash: ~/.bashrc
- Zsh: ~/.zshrc
- Fish: ~/.config/fish/config.fish
Проверьте, какая оболочка у вас установлена, командой:
echo $SHELLЕсли хотите сменить оболочку — используйте chsh. Но для настройки заставки достаточно редактировать конфигурацию текущей оболочки.
Откройте конфигурационный файл любым редактором. Пример с Vim:
vim ~/.bashrcСовет: перед изменением сделайте резервную копию:
cp ~/.bashrc ~/.bashrc.backupШаг 2: Проверка: простая строка приветствия
Перед добавлением сложных скриптов убедитесь, что файл читается. Вставьте в конец файла строку:
echo "Добро пожаловать в терминал!"Сохраните, закройте редактор и перезапустите терминал. Если сообщение появляется — файл используется оболочкой.
Шаг 3: Полезные варианты содержимого заставки
Ниже — проверенные варианты, которые можно комбинировать. Добавляйте их в конец конфигурационного файла или в отдельный исполняемый скрипт и запускайте его оттуда.
Системная информация: neofetch / screenfetch
Neofetch и Screenfetch собирают и красиво выводят информацию о системе: дистрибутив, ядро, загрузку процессора, память и т. п.
Установите нужный пакет через менеджер пакетов вашей системы, например:
# Debian/Ubuntu
sudo apt install neofetch
# Arch
sudo pacman -S neofetch
# Fedora/CentOS
sudo dnf install neofetchДобавьте в ~/.bashrc:
neofetch --ascii_distro ArchИли для screenfetch:
screenfetchПерезапустите терминал — увидите красивую панель с информацией.
Важно: если вы используете удалённые сессии (SSH) и не хотите выводить длинные баннеры в автоматизированных скриптах, окружите вызов условием, которое проверяет интерактивность:
# Выводим только в интерактивной оболочке
if [ -t 1 ]; then
command -v neofetch >/dev/null && neofetch
fiРандомное сообщение: fortune и cowsay
Fortune выводит случайные цитаты; cowsay оформляет текст в виде ASCII‑коровки или другой фигуры.
Установка:
# Ubuntu/Debian
sudo apt install fortune
# Arch
sudo pacman -S fortune-mod
# Fedora/CentOS
sudo dnf install fortune-mod
# cowsay
sudo apt install cowsayДобавьте в конфигурацию:
# Простой один раз выводим стих/шутку
fortune | cowsay -f tuxИтог — весёлое приветствие. Учтите, что в enterprise‑окружениях использование внешних пакетов может быть ограничено политиками безопасности.
ASCII‑арт: figlet и toilet
Figlet преобразует обычный текст в крупный ASCII‑баннер. Toilet — похожая утилита с дополнительными стилями.
Установка:
# Debian/Ubuntu
sudo apt install figlet
# Arch
sudo pacman -S figlet
# Fedora
sudo dnf install figletПример использования:
figlet -c "Hello, Dev"Добавьте строку в ~/.bashrc или в отдельный скрипт, чтобы при запуске отображался ваш фирменный баннер.
Погода и дата: wttr.in и date
Для быстрого прогноза используйте публичный сервис wttr.in, который возвращает текстовую сводку погоды.
Установите curl, если его нет:
# Debian/Ubuntu
sudo apt install curlДобавьте в конфиг:
# Погода для города: замените moscow на ваш город
curl -s "https://wttr.in/moscow?0"
# Текущая дата и время
date '+%A, %d %B %Y %H:%M:%S'Параметр ?0 показывает краткий текущий прогноз. Учтите приватность: запрос идёт в публичный сервис. Если вы в корпоративной сети, убедитесь, что политика допускает внешние HTTP запросы.
Шаблон: аккуратный и безопасный скрипт заставки
Рекомендуется держать код заставки читаемым и быстро выполняемым. Пример минимального скрипта (~~/bin/welcome.sh):
#!/usr/bin/env bash
# Минимальная заставка: безопасно, быстро, опционально
# Не выполняем в non-interactive режимах
if [ -z "$PS1" ]; then
return 0
fi
# Функция: вывод текста, если доступен инструмент
maybe_run() {
command -v "$1" >/dev/null 2>&1 && "$@"
}
# Легкий баннер
maybe_run figlet -- "$(whoami)@$(hostname -s)"
# Системная инфа
maybe_run neofetch --stdout || maybe_run screenfetch
# Рандомная цитата (опционально)
maybe_run fortune | maybe_run cowsay -f tux
# Погода (non-blocking): запускаем в фоне и ограничиваем время
if command -v curl >/dev/null 2>&1; then
{ curl -s "https://wttr.in/moscow?0" | sed -n '1,3p'; } &
fi
# Дата
date '+%A, %d %B %Y %H:%M:%S'Сделайте файл исполняемым и добавьте в ~/.bashrc:
chmod +x ~/bin/welcome.sh
# затем в ~/.bashrc
[ -x "$HOME/bin/welcome.sh" ] && "$HOME/bin/welcome.sh"Такой подход повышает читаемость и упрощает отладку.
Критерии приёмки
- Заставка появляется при запуске интерактивной оболочки (в новом окне терминала).
- Скрипт выполняется быстро (не блокирует prompt более 1–2 секунд) или выполняется частично в фоне.
- Не ломает автоматизированные SSH/cron задачи (т. е. не выводит лишнего в non‑interactive сессиях).
- Команды защищены проверками наличия утилит (command -v).
Отладка и частые проблемы
- Ничего не отображается: проверьте, читается ли файл (echo $SHELL; cat ~/.bashrc). Возможно, система использует ~/.profile или ~/.bash_profile — добавьте вызов вашего файла туда.
- Скрипт тормозит: внешние сетевые вызовы (wttr.in) могут блокировать. Вынесите их в фон или кешируйте результат в локальном файле с ограничением по времени.
- Автоматические задачи ломаются: убедитесь, что вывод заставки не запускается в non‑interactive сессиях. Используйте проверку [ -t 1 ] или проверку переменной PS1.
- Ошибки синтаксиса: проверьте скрипт shellcheck или sh -n script.sh.
Примеры команд для диагностики:
# Проверить, что команда доступна
command -v neofetch || echo "neofetch не найден"
# Проверить исполняемость скрипта
bash -x ~/bin/welcome.shСовместимость и миграция
Совместимость по оболочкам:
- Bash: ~/.bashrc — стандарт для большинства дистрибутивов.
- Zsh: ~/.zshrc — очень похожая логика, но синтаксис плагинов может отличаться.
- Fish: использует собственный синтаксис и файл ~/.config/fish/config.fish. Приведённые bash‑скрипты нужно адаптировать.
Миграционные советы:
- Переход с Bash на Zsh: перенесите логические части в отдельный скрипт и вызывайте его из .zshrc.
- Fish требует переписывания функций; используйте отдельный скрипт на bash и запускайте его через bash -c, если хотите сохранить исходный код.
Безопасность и приватность
- Не включайте в заставку вывод чувствительной информации (пароли, токены, ключи).
- Внешние запросы (wttr.in, обновления, удалённые API) могут раскрывать IP и структуру окружения. Если это неприемлемо — используйте локальные источники или корпоративные API.
- Проверяйте сторонние утилиты на происхождение перед установкой в production среде.
Роль‑ориентированные чеклисты
Разработчик:
- Создать ~/bin/welcome.sh с проверками наличия команд.
- Добавить вызов скрипта в ~/.bashrc при интерактивном запуске.
- Убедиться, что скрипт не печатает в non‑interactive сессиях.
Системный администратор:
- Утвердить список сторонних пакетов (neofetch, fortune, figlet) по безопасности.
- При необходимости разместить аналогичный сервис погоды внутри сети.
- Организовать резервные копии конфигураций и инструменты управления dotfiles (ansible, dotfiles repo).
Шаблон политики производительности
- Максимальное время выполнения синхронной части заставки: 1 секунда.
- Внешние сетевые вызовы выполняются асинхронно или кэшируются 30 минут.
- Скрипт обеспечивает функцию выключения (ENV var DISABLE_WELCOME=1).
Пример поддержки переменной окружения, чтобы отключать заставку:
# В начале ~/.bashrc
[ "$DISABLE_WELCOME" = "1" ] && returnПримеры расширений и альтернативные подходы
- Использовать systemd‑таблицы и метрики (systemd‑notify) для вывода состояния сервисов.
- Для командной панели использовать tmux с собственной конфигурацией, которая отображает статус при старте.
- Для графического терминала настраивать профиль эмулятора (шрифт, цвет) отдельно от заставки.
Тесты/критерии приёмки
- Запуск нового терминального окна отображает баннер без задержки >1–2 с.
- При выполнении ssh host командой без интерактивности вывод отсутствует.
- Скрипт корректно обрабатывает отсутствие внешних утилит (возвращает 0).
Часто задаваемые вопросы
Q: Где лучше хранить кастомную заставку — прямо в ~/.bashrc или в отдельном скрипте? A: В отдельном исполняемом скрипте (~~/bin/welcome.sh). Это улучшает читаемость, тестируемость и позволяет легко переиспользовать код между оболочками.
Q: Как отключить заставку временно? A: Перед запуском терминала установите переменную окружения DISABLE_WELCOME=1 или закомментируйте вызов в ~/.bashrc.
Примеры конфигураций и сниппеты
Мини‑чеклист по командам установки (Debian/Ubuntu):
sudo apt update
sudo apt install -y neofetch fortune cowsay figlet curlПростой invite‑скрипт для DevOps:
#!/bin/bash
if [ -t 1 ]; then
echo "Host: $(hostname) | User: $(whoami)"
free -h | awk '/Mem:/ {print "RAM: "$3" used / "$2" total"}'
df -h / | awk 'NR==2{print "Root: " $3 " used of " $2}'
fiMermaid: простая схема принятия решения о включении заставки
flowchart TD
A[Запуск оболочки] --> B{Интерактивная?}
B -- Да --> C{DISABLE_WELCOME=1?}
B -- Нет --> Z[Ничего не делаем]
C -- Да --> Z
C -- Нет --> D[Запуск welcome.sh]
D --> E[Вывод не критичных данных]
E --> ZМентальные модели и эвристики
- Не нагружайте заставку: полезность > украшения. Минимум синхронных сетевых вызовов.
- Делайте проверку наличия инструментов перед вызовом: это повышает переносимость.
- Разделяйте презентацию и логику: храните логику в исполняемом скрипте, презентацию оставляйте в простых командных строках.
Локализация и международные нюансы
- Формат даты в команде date можно локализовать через LC_TIME, например:
LC_TIME=ru_RU.UTF-8 date '+%A, %d %B %Y'- Сервисы погоды принимают названия городов на английском; при необходимости используйте координаты или локальные API.
Итог и рекомендации
- Храните кастомную заставку в отдельном исполняемом скрипте и вызывайте его из файла конфигурации оболочки.
- Проверяйте интерактивность и наличие утилит.
- Будьте внимательны к безопасности и приватности при использовании внешних сервисов.
Короткая дорожная карта для внедрения:
- Создайте резервную копию ~/.bashrc.
- Напишите ~/bin/welcome.sh с проверками и минимальным набором инструментов.
- Добавьте условный вызов в ~/.bashrc.
- Тестируйте в интерактивной и non‑interactive среде.
Summary:
- Простой способ добавить в терминал системную информацию, цитаты, ASCII‑арт и погоду.
- Используйте neofetch, fortune, figlet, curl; объединяйте их через условные вызовы.
- Соблюдайте безопасность и производительность — избегайте блокирующих сетевых вызовов в синхронной части заставки.
Похожие материалы
Как получить 4 ТБ в iCloud — инструкция
Не найден сканер отпечатков Windows Hello — восстановление
Новый интерфейс Google Play: как ориентироваться
Как записать экран на Mac — руководство
Как смотреть презентацию iPhone 15 — где и когда