Вопрос или проблема
При установке моего сервера я установил neofetch, как это обычно делают. Я также настроил его запуск при каждом входе в оболочку.
Перенесемся в сегодняшний день, когда я удалил neofetch в пользу fastfetch.
Теперь, когда я вхожу в систему, я получаю замечательное сообщение об ошибке в верхней части моего терминала:
-bash: neofetch: command not found
Хорошо, я это ожидал. Однако я никак не могу найти, где мне нужно удалить вызов.
Это не в .bashrc
или .profile
. Более того, я даже попробовал выполнить рекурсивный поиск с помощью grep по файловой системе для neofetch
, который вернул… 0 совпадений. Это также не настройка SSH RemoteCommand
, так как это происходит с нескольких клиентов, использующих разные конфигурации.
Если это важно, я использую tmux для сохранения сеанса терминала.
Очевидно, что переустановка Debian для этого не вариант, и, наверное, я мог бы просто проигнорировать это, но это просто раздражает.
Проблемы первого мира в своем лучшем проявлении, я понимаю.
Ответ или решение
Теория
Для опытного пользователя или системного администратора в среде Debian поиск источника исполнения команды при входе в систему может показаться задачей несложной. Однако, существуют нюансы, которые могут сделать этот процесс более запутанным. Когда вы устанавливаете приложение и интегрируете его исполнение в процесс входа в систему, необходимо точно понимать, где и как это происходит. По умолчанию, на большинстве Linux систем, включая Debian, существует несколько файлов конфигурации, которые могут содержать команды, исполняемые при входе в систему:
.bashrc
— обычно исполняется для интерактивных нон-логин шеллов..profile
или.bash_profile
— исполняются для логин шеллов./etc/profile
и скрипты в/etc/profile.d/
— системные файлы конфигурации, которые могут вызвать команды для всех пользователей..bash_login
— если существует, то запускается после.profile
.
Если команда neofetch
была введена в процессе входа через один из вышеперечисленных файлов или через сторонние сервисы вроде SSH, а вы её потом удалили, система будет выдавать обычное сообщение об ошибке: "command not found".
Пример
Предположим, вы сделали все очевидные шаги, проверили все файлы, но сообщение продолжает появляться. Это может означать, что команда neofetch
была добавлена в менее очевидное место. Например, в конфигурацию оконного менеджера tmux
или в один из скриптов инициализации или сеансов, которые также могут быть использованы для запуска команд при входе. Некоторые пользователи добавляют команды в файлы типа .xinitrc
, xsession
, xsessionrc
или в конфигурации терминальных эмуляторов.
Разберём подробно, как можно найти, откуда вызывается команда:
-
Убедитесь, что это не системные файлы: просмотрите
/etc/profile
и скрипты в/etc/profile.d/
. Они могут иметь правила, применяющиеneofetch
ко всем пользователям. -
Проверка конфигурации SSH: если клиентам не помогает изменение конфигураций SSH, посмотрите список правил, которые могут применять команды на логин, например, скрипт в
~/.ssh/authorized_keys
или правила для управляющей машины, такие как/etc/ssh/sshd_config
. -
Tmux конфигурации: поскольку вы указали, что используете
tmux
, проверьте~/.tmux.conf
на наличие команд, которые могут запускать определённые программы автоматически при старте новой сессии. -
Глобальный поиск: использовать команды вроде
find
вместе сxargs
иgrep
на специфических папках для поиска команды в более глубоких системных уровнях.
Применение
-
Мониторинг загрузки: добавьте привилегированного пользователя или используйте инструменты аудита (например,
auditctl
), чтобы отследить, от каких именно файлов происходит загрузка, что поможет идентифицировать источник команды. -
Логирование: используйте логирование для отслеживания всех процессов, стартующих при логине, чтобы изолировать и изучить последовательность.
-
Эксперимент с окружением: измените временно своё окружение (например,
PS1
или переменные окружения) для экспериментального запуска, чтобы увидеть, не помогает ли это снизить количество причин.
Другими словами, сбор полной информации о логине, системных и пользовательских скриптах конфигурации, вкупе с детальным аудитом и мониторингом процессов входа поможет вам локализовать и устранить ошибку с запуском neofetch
. Это не только исправит вашу текущую проблему, но и даст полезный опыт по управлению конфигурацией системы в будущем.