Hay una línea en la ~/.profile
que está
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
No estoy seguro de lo último i
.
- ¿Debo eliminarlo?
- ¿No es un error de sintaxis?
bash
environment-variables
Sonrisa
fuente
fuente
$PATH
variable de entorno, pero no son duplicados en absoluto. A lo sumo, están relacionados. Esta pregunta es un problema en el~/.profile
que resulta ser un personaje adicional en la línea donde$PATH
se asigna el entorno.PATH=
línea~/.profile
debería ser válida, que es la pregunta real aquí.Respuestas:
No, no es un error de sintaxis; es solo una letra que se agrega después de la expansión de
$PATH
, porque el shell elimina las comillas ...Entonces, además de anteponer directorios locales, ha eliminado efectivamente lo existente
/snap/bin
de mi RUTA y ha agregado lo inexistente/snap/bini
.Puede quitar el
i
para reparar su RUTA.Para ver el cambio, deberá cerrar sesión y volver a
source ~/.profile
iniciarla o ejecutarla en cualquier shell que esté utilizando (o iniciar el shell conbash -l
), porque solo.profile
se lee mediante shells de inicio de sesión .Si no realizó este cambio usted
.profile
mismo, puede restaurar el archivo predeterminado ejecutandoEsto cambia el nombre del antiguo
.profile
.profile.old
(también puede eliminar el archivo si lo desea) y lo reemplaza con la versión predeterminada de su sistema/etc/skel
.fuente
Creo que aquí no está claro qué significa la siguiente expresión:
La primera parte
PATH=
significa que asignamos un nuevo valor a la variable (entorno)$PATH
.La segunda parte es el nuevo valor de esa variable. En el caso actual, la variable
$HOME
se expandirá con su valor actual y a ese valor se le agregará la cadena/bin:
. Lo mismo ocurre con la siguiente parte de la cadena$HOME/.local/bin:
. Finalmente, el valor actual (anterior) de la$PATH
variable se expandirá y agregará. El colon:
desempeña un papel de delimitador en laPATH
expresión.El objetivo final es escribir:
PATH=<some additional paths>+<the the current value of $PATH>
. Ponemos estas rutas adicionales delante de la cadena, porque queremos que el shell busque ejecutables primero en estas ubicaciones y solo luego en todo el sistema.El personaje
i
es innecesario. Se agregará al nuevo valor de$PATH
y hará un desastre, como @Zanna explica en su respuesta .fuente
Sí, es un error de sintaxis, el real
.profile
debería verse así a menos que haya cambiado las cosas (esta es la versión 17.10, vea las notas a continuación):Esto podría verse diferente en versiones anteriores de Ubuntu donde la comprobación de si el
bin
directorio de usuarios está presente no se incluyó en el.profile
. La forma más fácil de comprobar cómo debería ser es echar un vistazo/etc/skel/.profile
.Entonces, para agregar lo que solicitó en su comentario, simplemente coloque esto al final de su archivo de perfil:
Si alguna vez arruinas tu perfil por completo, hay una copia desde donde puedes obtener uno nuevo
/etc/skel/
.fuente
/etc/skel/.profile
en 16.04 se ve diferente, sin una prueba de si"$HOME/bin"
existe. Incluso si esa fuera una mejor variante (IMO), parece haber cambiado de nuevo en 17.10, por una razón o por error.