¿Es posible averiguar qué archivos están configurando / agregando a las variables de entorno y su orden de precedencia?


9

Algunos de mis variables de entorno ( $PATH, $MANPATHy amigos) están situados parcialmente en diferentes archivos de origen.

Me encuentro deseando un comando o método para recopilar rápidamente qué parte , en una variable de entorno específica, vino de qué archivo .

Mi conjunto $ PATH, por ejemplo, ha sido, obviamente, (añadió a) en .bashrc, /etc/paths, /etc/paths.d/X11... y todavía estoy en busca de ese último archivo misteriosa que superflua creó una definición de la ruta duplicado en mi $PATH.

Se necesita un buen tiempo para localizar manualmente los archivos que contribuyen a las variables de entorno. Debe haber una forma útil de evitar esta labor innecesaria de rastrear a todos los setters ... ¿o soy el único que piensa en este sentido?

Respuestas:


6

Por lo general PATHse establece en un valor inicial de una manera altamente dependiente del sistema por el programa que normalmente se conecta ( pam_enves un contribuyente común), entonces /etc/profiley ~/.profilearchivos que incluyen pasar a modificar ese valor.

Elimine cualquier cambio en PATHin .bashrc, la configuración del entorno no pertenece .bashrc: consulte Diferencia entre .bashrc y .bash_profile .

Primero intente iniciar sesión en modo texto (por ejemplo, con ssh localhost), ya que el inicio de sesión es mucho más simple que en modo gráfico.

Poner set -xal principio de /etc/profiley ~/.profile. El shell imprimirá un rastro de lo que hace en su flujo de error estándar; busca asignaciones PATHen la traza.

No existe una noción de precedencia a las asignaciones de variables de entorno: el que asigna las últimas victorias.


6

Su RUTA se puede configurar en cualquier lugar, no solo en su archivo .bashrc. Lo más probable es que su sistema tenga un archivo, /etc/profiley / o /etc/profile.localque establezca una ruta predeterminada para todos los usuarios en su sistema. Los cambios o adiciones específicos del usuario pueden establecerse en su .profilearchivo si no están en su archivo .bashrc, o puede que solo esté usando el valor predeterminado en su sistema.

Si desea realizar cambios que solo le afecten, los incluiría en .profileel siguiente formulario:

export PATH=/new/directory:$PATH

editando así la ruta actual en lugar de reescribirla por completo.

La sección "INVOCACIÓN" de man bash(o aquí ) explica la diferencia entre .profiley .bashrc, y así sucesivamente, y qué otros archivos y lectura y en qué orden cuando inicia sesión o inicia un shell.


1

Es muy poco probable que exista un mecanismo para esto. Solo piense en cuántas formas hay de cambiar el valor de una variable env en el shell.

Sin set -xembargo, es posible que tengas suerte .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.