Как сделать так, чтобы мои конфигурационные dotfiles также загружались при использовании sudo?

Вопрос или проблема

Предположим, я делаю некоторую настройку в моем $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.

  1. Как root, sudoedit делает временную копию файла, который нужно отредактировать.
  2. Как $USER, вызывает $VISUAL в графическом интерфейсе, $EDITOR в не графическом, на временном файле.
  3. Как root, копирует временный файл обратно в файл, который нужно отредактировать, если редактор завершился успешно.

Ответ или решение

Чтобы ваши конфигурационные файлы (.dotfiles) загружались при использовании sudo, важно понимать, что стандартные конфигурации, хранящиеся в директории пользователя, не будут автоматически применяться при выполнении команд с правами суперпользователя. Это происходит потому, что при использовании sudo система переключается на пользователя root, у которого своя среда.

Решение проблемы через использование sudoedit

Одним из наиболее эффективных способов обойти эту проблему является использование команды sudoedit, так как она позволяет редактировать файлы с правами административного доступа, сохраняя при этом настройки и параметры текущего пользователя.

Настройка sudoedit

  1. Конфигурация переменных окружения:
    В вашем файле ~/.bashrc добавьте следующие строки, чтобы определить предпочитаемый редактор:

    export EDITOR=$(type -p micro)
    export VISUAL=$(type -p micro)

    Эти переменные указывают системе использовать micro как редактор по умолчанию.

  2. Активируйте изменения:
    Выполните команду source ~/.bashrc для загрузки изменений в текущую сессию терминала.

Использование sudoedit

После настройки, вы можете использовать команду sudoedit, чтобы редактировать файлы с правами доступа root, одновременно сохраняя пользовательские настройки вашего редактора:

sudoedit /etc/shells

Как это работает:

  • Создается временная копия файла от имени root.
  • Временный файл открывается в редакторе micro, используя настройки текущего пользователя.
  • Если редактирование завершается успешно, временная копия заменяет оригинал.

Иное применение для других инструментов

Если у вас есть другие инструменты, которые требуют аналогичные настройки, вы можете применить этот же подход для их конфигурации. Например, создать алиасы или скрипты, которые бы передавали пользовательские конфигурации в контексте команды sudo.

Используя sudoedit и правильно конфигурируя среду, можно избежать ненужного дублирования файлов и сохранить единообразие в использовании инструментов как от имени обычного пользователя, так и администратора системы.

Применяя эти методы, вы получите более гибкое управление системными файлами и сможете эффективно работать с инструментами на вашем компьютере, не модифицируя конфигурации глобально и избегая дублирования.

Оцените материал
Добавить комментарий

Капча загружается...