Siempre que lo ejecute correctamente, es una cuestión de su preferencia.
Además de las diferencias en las características , el editor de texto que usa es, de hecho, más o menos su preferencia. Esto es cierto incluso cuando su editor de texto es un programa gráfico como Gedit . Esto no quiere decir que no haya una buena razón nano
y vim
, a menudo, se recomiendan. Los editores de texto basados en terminales tienen gusto vim
(o al menos un vi
comando) y nano
están disponibles incluso cuando no hay GUI e incluso en la mayoría de los sistemas mínimos y rotos ; tienen algo de tradición detrás de ellos (si eres partidario de ese tipo de cosas); pueden ejecutarse en la misma terminal en la que se realizan otras tareas; se integran automáticamente en los flujos de trabajo de los usuarios del multiplexor terminal ; y es más probable que estén disponibles que cualquier otroeditor de texto gráfico particular , incluso Gedit, incluso en Ubuntu (que tiene varios sabores ).
Eso no es todo. Si va a editar archivos del sistema, un enfoque es ejecutar su editor como root. Este no es el único enfoque, y hay algunos argumentos en contra (ver más abajo), pero es uno común. Si adopta ese enfoque y utiliza un programa gráfico como su editor, debe tener cuidado de ejecutarlo de tal manera que $HOME
sea el directorio de inicio de la raíz en lugar del suyo , y esto agrega otra capa de problemas y complejidad. Pero ya lo estás haciendo; estás corriendo sudo -H gedit
, que es una de las formas razonables . Aún así, esa complejidad es otra razón por la cual las personas tienden a sugerir editores no gráficos.
Los programas gráficos son a menudo más complicados que los programas no gráficos. Tener más cosas ejecutadas como root es generalmente malo, ya que hay más formas en que las cosas podrían salir mal, incluso debido a posibles errores, incluso por accidente. (Sin vim
embargo, los editores de texto no gráficos, como también son bastante sofisticados, y a menudo están configurados para ejecutar numerosos programas externos para realizar diversas tareas).
Además de ejecutar el editor como root, otro enfoque general es editar un archivo que el editor puede modificar incluso cuando se ejecuta como su usuario (no root), de modo que los cambios en el archivo se propaguen al archivo propiedad de root que desee cambiar. Eso suena abstracto porque los detalles varían considerablemente. A continuación se presentan dos enfoques concretos importantes.
sudoedit
Una forma bastante antigua de hacer esto es sudoedit
(documentada en la misma página del manual quesudo
). De manera predeterminada, sudoedit
utiliza el editor de texto predeterminado , que generalmente no es, y no debería ser, un programa gráfico. Pero se puede decir que para utilizar cualquier editor a través de los SUDO_EDITOR
, VISUAL
o EDITOR
variables de entorno , que se consulta en ese orden. Así puedes ejecutar:
VISUAL=gedit sudoedit filename
Reemplace filename
con una ruta relativa o absoluta a su archivo.
Esto hace una copia temporal del archivo que desea editar. La copia es propiedad de usted, no de la raíz (o de quien sea el propietario original). Abre el editor de texto y puede editar la copia temporal. Cuando cierra el editor de texto, sudoedit
comprueba si realmente realizó cambios. Si lo hizo, copia la copia temporal modificada de nuevo al original.
Si bien sudoedit
funciona con editores gráficos, también es útil para editores basados en terminales. En ambos casos, se ejecuta el editor de texto como usted, por lo que tiene su configuración, y otras acciones que realice en ella otra de las modificaciones realizadas a ese archivo se llevan a cabo por usted, que ofrece un poco de protección contra algunos tipos de errores.
Puede establecer una de esas variables de entorno de forma persistente si lo desea. SUDO_EDITOR
es quizás el mejor ya que se usa para menos otras cosas. Sin embargo, si lo configura gedit
, tenga en cuenta que los comandos como no funcionarán cuando no haya una GUI disponible, como suele ser el caso (aunque no siempre ) en una consola virtual o mediante SSH .sudoedit filename
El servidor de administración de GVFS
Otra forma más nueva de hacer esto es abrir el archivo a través de su admin://
ruta GVFS en lugar de su ruta tradicional de estilo Unix. Gracias a pomsky por enseñarme sobre esto. Del mismo modo que hay rutas GVFS para editar archivos que, en otros aspectos, no están en un lugar conveniente para editar, por ejemplo, porque están en una máquina remota a la que está conectado a través de SSH, GVFS admite admin://
rutas para editar archivos usted no posee
Esto es conceptualmente similar a sudoedit
que ejecuta su editor como usted mismo y el archivo que ve el editor es algo que se le permite editar. Intentar abrir el archivo requiere que se autentique; Esta no es una forma mágica de eludir las restricciones de seguridad habituales.
gedit admin:///path/to/filename
No, /path/to/filename
debe haber una ruta absoluta al archivo, a partir de /
. Entonces hay tres /
personajes después admin:
.
Codificaciones y otras cosas teóricamente afectadas por la configuración del editor
La codificación de un archivo no se ve realmente afectada por si el editor que usa es o no gráfico. Algunos editores, como vim
, incluso pueden operar gráficamente (el gvim
comando) o no gráficamente (el vim
comando). La respuesta simple a su pregunta sobre las codificaciones es que no tiene que preocuparse por eso. Eso está lo suficientemente cerca de la verdad como para no tener que leer el resto de esta respuesta.
En las versiones actuales (y pasadas) de Ubuntu, los comandos les gusta sudo nano
y sudo vim
ejecutan esos editores como root, pero $HOME
aún se han configurado en su directorio de inicio. Esto significa que los editores, por defecto, usarán su configuración en lugar de la configuración de la raíz. Si hay algo en su configuración de esos editores (o en un programa que ejecutan para hacer parte de su trabajo, como git
) sobre codificaciones o terminaciones de línea , se seguirá. Con eso no sucederá.sudo -H editor
Algunas personas usan desnudos sudo
(es decir, sin -i
o -H
) para los editores porque quieren eso. Pero realmente, deberías pensar dos veces sobre esto. No solo puede lograr ese objetivo de manera más limpia con un método como sudoedit
, también hay otras desventajas de comandos como sudo nano
y sudo vim
:
Si la configuración de su editor hace que se ejecute algo, se ejecuta como root. Para editores sofisticados como vim
, esto puede hacer que se ejecute una gran cantidad de código no trivial como root. Como se mencionó anteriormente, tener menos código ejecutado como root es generalmente bueno y este es uno de los argumentos en contra de ejecutar editores gráficos como root.
Si su vim
configuración tiene numerosos complementos, por ejemplo, para realizar un análisis estático en el código fuente a medida que lo escribe, y la raíz no lo hace, menos cosas se ejecutan como raíz que . (¡Incluso se ejecuta menos como root , pero sus complementos aún funcionan!) Esto es independiente de si su editor es o no gráfico.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Si la configuración de su editor está rota y le impide editar archivos fácilmente, entonces arreglar eso puede ser aún más complicado, ya que también se aplica a la raíz. Esto es simplemente una molestia, no un problema difícil de resolver.
Los comandos como sudo vim
tienen un poco del mismo problema que el comando (¡mal aconsejado!) sudo gedit
. Si ejecuta un editor vim
como root pero sin reiniciar $HOME
(como sudo -H
y sudo -i
lo haría), y crea archivos de configuración para sí mismo , esos archivos de configuración residirán en su directorio de inicio pero serán propiedad de root, y su configuración puede estar algo rota cuando luego ejecutas el editor como tú mismo.
Bueno, ¡esto suena muy parecido a ese problema! La razón por la que es menos importante que con las aplicaciones gráficas es que el editor generalmente todavía se inicia, los mensajes de error suelen ser más fáciles de entender, por lo general puede averiguar qué archivos específicos se ven afectados mucho más fácilmente, y la rotura generalmente se limita a ese programa (Los programas gráficos usan archivos de configuración en más lugares). Además, a diferencia de los editores gráficos, los usuarios que solo usan casualmente un editor de texto y no cambian deliberadamente su configuración tienen pocas probabilidades de experimentar este problema.
Nuevamente, puede usar la configuración del editor de su propia cuenta de usuario mientras evita los problemas de permisos usando sudoedit
o, desde el escritorio, iniciando el editor normalmente pero accediendo al archivo a través de una admin://
ruta.
Finalmente, tenga en cuenta que el comportamiento antes mencionado de sudo
cuándo -H
o cuándo -i
se pasa está planeado para cambiar en una versión futura de Ubuntu (como ya lo ha hecho, hace años, en la mayoría de los sistemas operativos similares a Unix que usan sudo
). El comportamiento ya ha cambiado en Ubuntu 19.10 , que es la versión de desarrollo a partir de este escrito.
-H
parte es importante , no la usesudo
para iniciar aplicaciones GUI sin ella.