Aquí está la motivación para la pregunta:
Estoy usando Ubuntu 12.04 LTS 2 con el escritorio de Unity. En mi archivo .bashrc, agrego varios directorios a mi variable PATH y defino algunas variables de entorno, como JAVA_HOME. Cuando inicio aplicaciones desde una terminal (ejecutando bash, mi shell predeterminado), esto funciona muy bien, pero para varios de los accesos directos que usan el iniciador de Unity, ejecutan aplicaciones que parecen estar definidas para usar #! / Bin / sh, que tiene un alias para / bin / dash, y no recogen el contenido de ~ / .bashrc o ~ / .profile.
Supongo que podría cambiar todos estos accesos directos para usar / bin / bash en lugar de / bin / sh para forzarlo a recoger los cambios .bashrc, pero eso parece realmente extraño.
Dado que Ubuntu 12.04 (por defecto) alias / bin / sh a / bin / dash y que mi shell predeterminado es / bin / bash, ¿hay un solo lugar donde pueda elegir modificar la RUTA y definir variables de entorno si las quiero? estar presente en todas estas circunstancias:
- Cada vez que creo un shell bash sin inicio de sesión (usando la terminal en la unidad)
- Cada vez que creo un shell bash de inicio de sesión (por ejemplo, iniciar sesión de forma remota a través de ssh)
- Cada vez que uso un iniciador de aplicaciones de Unity (dado que el iniciador usa / bin / sh).
- Cada vez que se ejecuta un trabajo cron (dado que SHELL = / bin / sh en / etc / crontab).
Si entiendo correctamente, supongo que:
- (1) / (2) y (3) / (4) son diferentes porque (1) / (2) son bash y (3) / (4) son guiones.
- (1) y (2) son diferentes porque los archivos que bash elige cargar difieren dependiendo de si es o no un shell de inicio de sesión.
- (3) y (4) son diferentes porque (3) vendrá en algún momento después de haber iniciado sesión (y, por lo tanto, ~ / .profile habrá sido obtenido por uno de sus procesos principales, mientras que (4) vendrá en algún momento punto en el que estoy , no inscrito, y por lo tanto ~ / .profile no habrá sido leída.
(No me sorprendería si también importan otros factores, como si el shell es interactivo o no, por lo que probablemente haya más combinaciones que ni siquiera había previsto ... Estoy feliz de que mi pregunta "mejore" " en ese caso.)
Esperaría que en algún momento, alguien debe haber hecho algún tipo de guía que le diga cómo / dónde modificar las variables de entorno de una manera independiente del shell (o al menos una forma compatible con guiones / bash) ... Simplemente puedo ' Parece que no encuentra los términos de búsqueda correctos para ubicar dicha guía.
¡Soluciones o punteros a soluciones muy apreciadas!
Actualizado:
- Aclaración: este es el usuario predeterminado de Ubuntu creado por el proceso de instalación 12.04, por lo que no es nada lujoso. Que no tiene un ~ / .profile (que explícitamente fuentes de ~ / .bashrc), y la única ~ / .bash * archivos presentes son .bashrc, .bash_history y .bash_logout ... por lo que no hay ninguna .bash_profile.
- Énfasis en el alcance: Realmente no me importan los shells que no sean el shell interactivo predeterminado (bash) y cualquier script que use / bin / sh (con alias para el guión), por lo que no hay necesidad de complicar esto con nada extra para tcsh / ksh / zsh / etc. apoyo.