Пока вы управляете им правильно, это зависит от ваших предпочтений.
Помимо различий в функциях , какой текстовый редактор вы используете - это действительно ваши предпочтения. Это верно даже тогда, когда ваш текстовый редактор представляет собой графическую программу, такую как Gedit . Это не значит, что нет веских причин, nano
и vim
их часто рекомендуют. Терминальные текстовые редакторы, такие как vim
(или, по крайней мере, vi
команда) nano
, доступны даже тогда, когда нет графического интерфейса пользователя, и даже в большинстве минимальных и сломанных систем ; за ними стоит какая-то традиция (если вы неравнодушны к такого рода вещам); их можно запустить в том же терминале, в котором выполняются другие задачи; они автоматически интегрируются в рабочие процессы пользователей терминальных мультиплексоров ; и они более доступны, чем любойконкретный графический текстовый редактор, даже Gedit, даже в Ubuntu (который имеет несколько разновидностей ).
Это не все. Если вы собираетесь редактировать системные файлы, один из подходов состоит в том, чтобы запустить ваш редактор от имени пользователя root. Это не единственный подход, и против него есть некоторые аргументы (см. Ниже), но он распространен. Если вы воспользуетесь этим подходом и будете использовать графическую программу в качестве редактора, вам нужно позаботиться о том, чтобы запустить ее таким образом, чтобы $HOME
домашний каталог root был не вашим , а это добавляло еще один уровень сложности и сложности. Но вы уже делаете это; ты бежишь sudo -H gedit
, что является одним из разумных способов . Тем не менее, эта сложность является еще одной причиной, по которой люди склонны предлагать неграфические редакторы.
Графические программы часто являются более сложными, чем неграфические программы. Имея больше материала бежать как корень , как правило , плохо, что есть больше способов вещи может пойти не так, в том числе из - за возможные ошибки, в том числе случайно. (Неграфические текстовые редакторы, такие как vim
, также довольно сложны и часто конфигурируются для запуска множества внешних программ для выполнения различных задач.)
Помимо запуска редактора с правами root, другой общий подход заключается в редактировании файла, который редактор может изменять даже при работе от имени пользователя (не являющегося пользователем root), чтобы изменения в файле распространялись в файл, принадлежащий пользователю с правами root. изменить. Это звучит абстрактно, потому что особенности сильно различаются. Далее следуют два основных конкретных подхода.
sudoedit
Один довольно давний способ сделать это будет sudoedit
(описано в одной и той же странице , как вручнуюsudo
). По умолчанию sudoedit
используется текстовый редактор по умолчанию , который обычно не является и не должен быть графической программой. Но вы можете сказать ему , чтобы использовать любой редактор через SUDO_EDITOR
, VISUAL
или EDITOR
переменные окружения , которые он консультируется в таком порядке. Таким образом, вы можете запустить:
VISUAL=gedit sudoedit filename
Замените filename
относительный или абсолютный путь к вашему файлу.
Это делает временную копию файла, который вы хотите редактировать. Копия принадлежит вам, а не root (или тому, кто является первоначальным владельцем). Он открывает текстовый редактор, и вы можете редактировать временную копию. Когда вы закрываете текстовый редактор, sudoedit
проверяет, действительно ли вы внесли изменения. Если вы это сделали, он копирует измененную временную копию обратно в оригинал.
Хотя sudoedit
работает с графическими редакторами, это также полезно для терминальных редакторов. В обоих случаях, текстовый редактор работает , как вы, так что имеет конфигурацию, а также другие действия вы выполняете в ней другой , чем изменения , внесенные в этот файл выполняются вами, который предоставляет немного защиты от некоторых видов ошибок.
Вы можете установить одну из этих переменных среды постоянно, если хотите. SUDO_EDITOR
возможно, лучший, так как он используется для меньшего количества других вещей. Однако, если вы установите его gedit
, имейте в виду, что такие команды, как like , не будут работать, когда GUI недоступен, как это часто (хотя и не всегда ) имеет место в виртуальной консоли или через SSH .sudoedit filename
Серверная часть администратора GVFS
Еще один новый способ сделать это - открыть файл по admin://
пути GVFS, а не по традиционному Unix-стилю. Спасибо, что помогли Помскому научить меня этому. Так же, как есть пути GVFS для редактирования файлов, которые, в других отношениях, не находятся в удобном месте для редактирования - например, потому что они находятся на удаленном компьютере, к которому вы подключены через SSH, - GVFS поддерживает admin://
пути для редактирования файлов ты не владеешь
Концептуально это похоже на sudoedit
то, что вы запускаете свой редактор от себя, а файл, который видит редактор, - это то, что ему разрешено редактировать. Попытка открыть файл требует аутентификации; это не волшебный способ обойти обычные ограничения безопасности.
gedit admin:///path/to/filename
Там /path/to/filename
должен быть абсолютный путь к файлу, начиная с /
. Итак, есть три /
символа после admin:
.
Кодировки и другие вещи теоретически зависят от конфигурации редактора
Кодировка файла не зависит от того, является ли используемый вами графический редактор графическим. Некоторые редакторы, например vim
, даже могут работать графически ( gvim
команда) или не графически ( vim
команда). Простой ответ на ваш вопрос о кодировках заключается в том, что вам не нужно беспокоиться об этом. Это достаточно близко к правде, что вам действительно не нужно читать остальную часть этого ответа.
В текущих (и прошлых) выпусках Ubuntu такие команды, как sudo nano
и sudo vim
запускают эти редакторы как root, по- $HOME
прежнему установлены в вашем домашнем каталоге. Это означает, что редакторы по умолчанию будут использовать вашу конфигурацию, а не конфигурацию root. Если в вашей конфигурации этих редакторов (или в программе, которую они запускают для выполнения некоторой своей работы, например git
), есть что-то в отношении кодировок или концов строк , это будет выполнено. С этим не произойдет.sudo -H editor
Некоторые люди используют голые sudo
(то есть, без -i
или -H
) для редакторов, потому что они этого хотят. Но на самом деле, вы должны дважды подумать об этом. Мало того, что вы можете достичь этой цели более чисто с помощью метода, как sudoedit
, есть и другие недостатки команд, таких как sudo nano
и sudo vim
:
Если конфигурация вашего редактора вызывает запуск чего-либо, он запускается от имени пользователя root. Для продвинутых редакторов, таких как vim
, это может привести к тому, что довольно много нетривиального кода будет выполняться от имени пользователя root. Как упомянуто выше, использование меньшего количества кода, выполняемого от имени пользователя root, обычно хорошо, и это один из аргументов против запуска графических редакторов с правами root.
Если ваша vim
конфигурация имеет множество плагинов - например, для выполнения статического анализа исходного кода при его вводе - а root - нет, с root'ом работает меньше вещей, чем . (Еще меньше запускается с правами root , но ваши плагины по-прежнему работают!) Это не зависит от того, является ли ваш редактор графическим.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Если ваша конфигурация редактора повреждена и мешает вам легко редактировать файлы, то исправление может быть еще более сложным, так как это относится и к root. Это просто хлопот, а не сложная проблема для решения.
Команды , как sudo vim
есть немного той же проблемы, что и (опрометчивый!) Команды sudo gedit
. Если вы запустите редактор vim
под учетной записью root, но без сброса $HOME
(как sudo -H
и sudo -i
будет), и он создаст файлы конфигурации для себя , эти файлы конфигурации будут находиться в вашем домашнем каталоге, но они будут принадлежать пользователю root, и ваша конфигурация может быть несколько нарушена. когда вы позже запустите редактор как вы сами.
Ну, это очень похоже на эту проблему! Причина, по которой это менее важно, чем в графических приложениях, заключается в том, что редактор обычно все еще запускается, сообщения об ошибках обычно легче понять, обычно вы можете выяснить, какие конкретные файлы затрагиваются гораздо легче, а поломка обычно ограничивается эта одна программа. (Графические программы используют файлы конфигурации в большем количестве мест.) Кроме того, в отличие от графических редакторов, пользователи, которые лишь случайно используют текстовый редактор и не намеренно изменяют его конфигурацию, вряд ли столкнутся с этой проблемой.
Опять же, вы можете использовать конфигурацию редактора своей учетной записи, избегая проблем с разрешениями, используя sudoedit
или, с рабочего стола, обычно запуская редактор, но обращаясь к файлу по admin://
пути.
Наконец, обратите внимание, что вышеупомянутое поведение, sudo
когда -H
или -i
передано, фактически планируется изменить в будущем выпуске Ubuntu (как это уже было много лет назад, в большинстве Unix-подобных операционных систем, которые используют sudo
). Поведение уже изменилось в Ubuntu 19.10 , который является версией для разработчиков на момент написания этой статьи.
-H
часть важна , не используйтеsudo
для запуска приложений с графическим интерфейсом без него.