Конфигурационные файлы профиля пользователя в Linux (Kubuntu) находятся в домашней директории пользователя (~/.) и являются скрытыми (начинаются с точки).
Полный список основных файлов профиля:
| Файл |
Назначение |
Когда выполняется |
| .bashrc |
Конфигурация интерактивной оболочки Bash |
При каждом запуске нового терминала |
| .bash_history |
История введенных команд |
Постоянно обновляется |
| .bash_logout |
Действия при выходе |
При завершении login-сеанса |
| .profile |
Переменные окружения для login shell |
При входе в систему |
| .bash_profile |
Альтернатива .profile (только для Bash) |
При login shell |
| .bash_login |
Еще одна альтернатива (редко) |
При login shell |
| .inputrc |
Настройки Readline (автодополнение, клавиши) |
При запуске Bash |
| .gitconfig |
Настройки Git |
При вызове Git |
| .gitignore_global |
Глобальные игнорируемые файлы Git |
При работе Git |
| .aliases |
Пользовательские алиасы (часто подключают из .bashrc) |
По усмотрению |
| .functions |
Пользовательские функции оболочки |
По усмотрению |
| .exports |
Переменные окружения (организационный файл) |
По усмотрению |
[Описание каждого файла]
1. .bashrc - основной файл настройки терминала
# Пример содержимого
# Алиасы
alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
alias gs='git status'
# Кастомный prompt (приглашение)
PS1='\u@\h:\w\$ '
# Цветной вывод
alias ls='ls --color=auto'
eval "$(dircolors -b)"
# Пользовательские пути
export PATH="$HOME/.local/bin:$PATH"
# Настройка редактора
export EDITOR=nano
Особенности:
- Выполняется каждый раз при открытии терминала
- Не выполняется при login shell (если нет явного вызова из .profile)
- Идеален для алиасов, функций, настроек prompt
2. .bash_history - история команд
# Просмотр истории
history
# Настройка размера истории (в .bashrc)
export HISTSIZE=10000 # Количество команд в памяти
export HISTFILESIZE=20000 # Количество команд в файле
export HISTTIMEFORMAT="%F %T " # Добавить временные метки
export HISTCONTROL=ignoredups # Игнорировать дубликаты
export HISTIGNORE="ls:cd:exit" # Игнорировать определенные команды
Важно:
- Файл .bash_history нельзя редактировать вручную (только через `history -c` или удаление)
- Команды, начинающиеся с пробела, не сохраняются (если настроено)
- Хранится в ~/.bash_history (обычно)
3. .bash_logout - действия при выходе
# Пример содержимого ~/.bash_logout
#!/bin/bash
# Очистка временных файлов
rm -rf /tmp/myapp_*
# Сохранение истории
history -a
# Очистка экрана при выходе
clear
# Вывод сообщения
echo "See you later!"
Выполняется только при:
- Выходе из login shell (Ctrl+D или exit)
- Не выполняется при простом закрытии терминала (в не-login shell)
4. .profile - переменные окружения для login shell
# Пример .profile
# Загрузка .bashrc если интерактивная оболочка
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# Добавление путей
export PATH="$HOME/bin:$PATH"
# Настройка локали
export LANG=ru_RU.UTF-8
export LANGUAGE=ru_RU:en
# Запуск приложений при входе (только один раз)
if command -v dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
eval "$(dbus-launch --sh-syntax --exit-with-session)"
fi
Особенности:
- Выполняется один раз при входе в систему
- Подходит для переменных окружения
- Может загружать .bashrc
5. .gitconfig - настройки Git
# Пример .gitconfig
[user]
name = Иван Иванов
email = ivan@example.com
[core]
editor = nano
autocrlf = input
[alias]
co = checkout
br = branch
st = status
lg = log --oneline --graph
[color]
ui = auto
[init]
defaultBranch = main
# Настройки для определенных репозиториев
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
Применение:
# Просмотр всех настроек
git config --list
# Установка значений через командную строку
git config --global user.name "Ваше Имя"
git config --global user.email "email@example.com"
6. .inputrc - настройки Readline (поведение командной строки)
# Пример .inputrc
# Стрелки для поиска в истории
"\e[A": history-search-backward
"\e[B": history-search-forward
# Игнорировать регистр при автодополнении
set completion-ignore-case on
# Показывать все варианты сразу
set show-all-if-ambiguous on
# Тоновая подсветка скобок
set blink-matching-paren on
# Цветное автодополнение
set colored-stats on
7. Дополнительные организационные файлы
# .aliases - отдельно храним алиасы
# В .bashrc добавляем:
if [ -f ~/.aliases ]; then
. ~/.aliases
fi
# .functions - функции оболочки
# В .bashrc:
if [ -f ~/.functions ]; then
. ~/.functions
fi
# .exports - переменные окружения
# В .profile:
if [ -f ~/.exports ]; then
. ~/.exports
fi
[Приоритет и порядок загрузки]
Login Shell (вход через tty, SSH, или логин в системе)
1. /etc/profile (системный)
2. ~/.profile (или ~/.bash_profile, или ~/.bash_login)
└── может загружать ~/.bashrc
3. ~/.bashrc (если вызван из .profile)
Non-Login Shell (открытие терминала внутри сессии)
1. ~/.bashrc
2. (не загружает .profile)
Различия интерактивного и неинтерактивного shell:
- Интерактивный шелл (для ввода команд): загружает .bashrc
- Неинтерактивный шелл (для скриптов): не загружает .bashrc
[Практические рекомендации]
Пример хорошей организации:
~/.bashrc:
# Загрузка компонентов
for file in ~/.{aliases,functions,exports,bash_prompt}; do
[ -r "$file" ] && source "$file"
done
unset file
# Настройки только для терминала (не для скриптов)
export HISTSIZE=10000
export EDITOR=nano
~/.profile:
# Переменные окружения для всей сессии
export PATH="$HOME/bin:/usr/local/bin:$PATH"
export LANG=ru_RU.UTF-8
# Загрузка .bashrc для интерактивных shell
if [ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
Создание шаблона для новых пользователей:
# Копирование настроек в /etc/skel
sudo cp ~/.bashrc /etc/skel/
sudo cp ~/.profile /etc/skel/
sudo cp ~/.gitconfig /etc/skel/
# Новые пользователи получат эти файлы
sudo useradd -m -k /etc/skel newuser
[Полезные команды]
# Применить изменения без перезагрузки
source ~/.bashrc
# или
. ~/.bashrc
# Посмотреть какой тип оболочки
echo $0
# bash (интерактивная)
# -bash (login shell)
# Проверить загруженные файлы
bash -x -l 2>&1 | grep "source\|.bashrc\|.profile"
# Резервное копирование всех конфигов
tar -czf backup_configs.tar.gz ~/.{bashrc,profile,gitconfig,inputrc}
[Частые ошибки]
1. Добавление вывода в .bashrc (например, echo "Hello") - будет появляться при каждом открытии терминала
2. Запуск GUI-программ в .profile - замедляет вход в систему
3. Экспорт ненужных переменных - засоряет окружение
4. Не забывайте пробел после источника:
# Правильно
. ~/.aliases
source ~/.aliases
# Неправильно
./~/.aliases # попытается выполнить как скрипт