Вопрос или проблема
Предположим, я делаю некоторую настройку в моем $XDG_CONFIG_HOME (который находится в /home/user/.config). Если я запускаю текстовый редактор micro
и у меня есть пользовательские сочетания клавиш и пользовательская тема, то при запуске sudo micro
будет загружена конфигурация по умолчанию с сочетаниями клавиш по умолчанию. Как справиться с такими вещами для каждого инструмента, который я использую? Я не хочу редактировать глобальную конфигурацию в /etc и не хочу дублировать её в .root.
Есть ли более простой способ?
Команда sudoedit
(man sudoedit
) решает эту проблему.
Сначала настройте sudoedit
:
Добавьте в ваш ~/.bashrc
:
export EDITOR=$(type -p micro)
export VISUAL=$(type -p micro)
Затем выполните source ~/.bashrc
.
Это завершает настройку sudoedit
.
Затем вы можете использовать sudoedit /etc/shells
.
- Как
root
,sudoedit
делает временную копию файла, который нужно отредактировать. - Как
$USER
, вызывает$VISUAL
в графическом интерфейсе,$EDITOR
в не графическом, на временном файле. - Как
root
, копирует временный файл обратно в файл, который нужно отредактировать, если редактор завершился успешно.
Ответ или решение
Чтобы ваши конфигурационные файлы (.dotfiles) загружались при использовании sudo, важно понимать, что стандартные конфигурации, хранящиеся в директории пользователя, не будут автоматически применяться при выполнении команд с правами суперпользователя. Это происходит потому, что при использовании sudo система переключается на пользователя root, у которого своя среда.
Решение проблемы через использование sudoedit
Одним из наиболее эффективных способов обойти эту проблему является использование команды sudoedit
, так как она позволяет редактировать файлы с правами административного доступа, сохраняя при этом настройки и параметры текущего пользователя.
Настройка sudoedit
-
Конфигурация переменных окружения:
В вашем файле~/.bashrc
добавьте следующие строки, чтобы определить предпочитаемый редактор:export EDITOR=$(type -p micro) export VISUAL=$(type -p micro)
Эти переменные указывают системе использовать
micro
как редактор по умолчанию. -
Активируйте изменения:
Выполните командуsource ~/.bashrc
для загрузки изменений в текущую сессию терминала.
Использование sudoedit
После настройки, вы можете использовать команду sudoedit
, чтобы редактировать файлы с правами доступа root, одновременно сохраняя пользовательские настройки вашего редактора:
sudoedit /etc/shells
Как это работает:
- Создается временная копия файла от имени root.
- Временный файл открывается в редакторе
micro
, используя настройки текущего пользователя. - Если редактирование завершается успешно, временная копия заменяет оригинал.
Иное применение для других инструментов
Если у вас есть другие инструменты, которые требуют аналогичные настройки, вы можете применить этот же подход для их конфигурации. Например, создать алиасы или скрипты, которые бы передавали пользовательские конфигурации в контексте команды sudo.
Используя sudoedit
и правильно конфигурируя среду, можно избежать ненужного дублирования файлов и сохранить единообразие в использовании инструментов как от имени обычного пользователя, так и администратора системы.
Применяя эти методы, вы получите более гибкое управление системными файлами и сможете эффективно работать с инструментами на вашем компьютере, не модифицируя конфигурации глобально и избегая дублирования.