Hasta la fecha solía configurar mis variables de entorno en el bash.bashrc
archivo. Recientemente me dijeron que usara el /etc/environment
archivo. Bueno, ambos funcionan bien.
Entonces, ¿cuál es la diferencia entre ellos?
Busqué en Google esto y descubrí que "bashrc se usa para usuarios y entornos particulares, en todo el sistema". ¿Qué se entiende por todo el sistema aquí? /etc/bash.bashrc
También está aplicando cambios en todo el sistema, supongo. Corrígeme si estoy equivocado. Cualquier tipo de ayuda será apreciada.
fuente
El
/etc/environment
archivo establece el sistema variable en todo el sistema para cada usuario en el arranque. Los comandos en el/etc/bash.bashrc
se ejecutan sibash
cualquier usuario abre el shell. Por lo tanto, las variables no se establecerían a menos quebash
se abra un shell al menos una vez.fuente
Y como usted pregunta sobre "todo el sistema ":
Los archivos de configuración ubicados en el
/etc
directorio se aplican a todos los usuarios del sistema. Para/etc/bash.bashrc
esto significaría que todos y todo lo que está utilizando el "Borne Again Shell" alias Bash en esa máquina. Incluso si usted es el único ser humano que lo usa, podría haber "usuarios técnicos" afectados (simplemente eche un vistazo/etc/passwd
y compruebe con qué frecuencia aparece el término "/ bin / bash", o usegrep bash /etc/passwd | wc -l
, lo que debería darle ese número directamente (es decir: "agarrar" todas las líneas que contienen la cadena "bash" del archivo "/ etc / passwd", y enviar los resultados ("|") al comando "wc" (recuento de palabras) para contar las líneas ("-l").Entonces, para su usuario, es mucho más seguro modificarlo
~/.bashrc
(es decir, el archivo ".bashrc" - con un punto inicial, sí - en su directorio de inicio, por ejemplo/home/ankur/.bashrc
), que luego afecta a su usuario y deja todo lo demás solo . Los archivos/etc
solo deben cambiarse si los cambios en todo el sistema realmente están destinados.Además: se usarán ambas configuraciones si existen. Primero, el archivo de todo el sistema (aquí:)
/etc/bash.bashrc
se lee y se "obtiene" (su configuración se aplica a la sesión actual), y luego los usuarios/home/username/.bashrc
se manejan de la misma manera y, por lo tanto, pueden agregar o incluso cambiar / sobrescribir la configuración de la configuración global/etc/bash.bashrc
archivo.fuente
Más allá de la discusión de todo el sistema y del alcance del usuario, una diferencia más significativa es
/etc/environment
que no es un script diferente~/.bashrc
.No puede desreferenciar la variable dentro
/etc/environment
, su asignación de variable que toma el valor de la línea literalmente (como ya lo mencionó roadmr).Su Ubuntu lo bloqueará si arruina el
$PATH
interior/etc/environment
al intentar agregar una nueva rutaSi su página de inicio de sesión de Ubuntu Gnome o Unity no le permitió ingresar sin quejarse de la contraseña incorrecta. Y ha modificado recientemente
/etc/environment
, lo más probable es que sea el caso.Una solución es iniciar sesión en la consola virtual CTRL+ ALT+ F1consola de inicio de sesión, verificar manualmente
$PATH
y corregir el/etc/environment
archivo.De acuerdo con esto ,
/etc/environment
se carga mediante la pila PAM, que llena la variable de entorno línea por línea.fuente
La diferencia entre los dos es que el
/etc/enivironment
archivo funcionará para todos los usuarios, mientras que el archivo bash.bashrc funcionará particularmente solo para ese usuario. Y si hace algo mal en el/etc/environment
archivo, las consecuencias pueden ser graves, mientras que puede deshacer fácilmente los cambios en el archivo bash.bashrc copiando el contenido del archivo / etc / environment. Pero la primera preferencia es dar albash.bashrc
archivo y luego al archivo / etc / environment. No es que si realiza cambios en elbash.bashrc
archivo, entonces el terminal dará preferencia al archivo de usuario local (es decir,bash.bashrc
) y luego al archivo principal (es decir,/etc/environment
).fuente