Voici la motivation de la question:
J'utilise Ubuntu 12.04 LTS 2 avec le bureau Unity. Dans mon fichier .bashrc, j'ajoute plusieurs répertoires à ma variable PATH et je définis quelques variables d'environnement, telles que JAVA_HOME. Lorsque je lance des applications à partir d'un terminal (exécutant bash, mon shell par défaut), cela fonctionne très bien, mais pour plusieurs des raccourcis qui utilisent le lanceur Unity, ils exécutent des applications qui semblent définies pour utiliser #! / Bin / sh, qui est aliasé vers / bin / dash, et ils ne récupèrent pas le contenu de ~ / .bashrc ou ~ / .profile.
Je suppose que je pourrais changer tous ces raccourcis pour utiliser / bin / bash au lieu de / bin / sh pour le forcer à reprendre les modifications de .bashrc, mais cela semble vraiment hacky.
Étant donné qu'Ubuntu 12.04 (par défaut) alias / bin / sh vers / bin / dash et que mon shell par défaut est / bin / bash, existe-t-il un seul endroit où je peux choisir de modifier le CHEMIN et définir des variables d'environnement si je les veux être présent dans toutes ces circonstances:
- Chaque fois que je crée un shell bash sans connexion (en utilisant le terminal dans l'unité)
- Chaque fois que je crée un shell bash de connexion (par exemple, connexion à distance via ssh)
- Chaque fois que j'utilise un lanceur d'application Unity (étant donné que le lanceur utilise / bin / sh).
- Chaque fois qu'un travail cron s'exécute (étant donné que SHELL = / bin / sh dans / etc / crontab).
Si je comprends bien, je suppose que:
- (1) / (2) et (3) / (4) sont différents car (1) / (2) sont bash et (3) / (4) sont tirets.
- (1) et (2) sont différents car les fichiers que bash choisit de charger diffèrent selon qu'il s'agit ou non d'un shell de connexion.
- (3) et (4) sont différents parce que (3) viendra à un moment donné après que je me suis connecté (et donc ~ / .profile aura été trouvé par l'un de ses processus parents, tandis que (4) viendra à un moment donné quand je ne suis pas connecté, et donc ~ / .profile n'aura pas été lu.
(Je ne serais pas surpris si d'autres facteurs importaient aussi, comme le fait que le shell soit interactif ou non, donc il y a probablement plus de combinaisons que je n'avais même pas anticipées ... Je suis heureux d'avoir ma question "améliorée" " dans ce cas.)
Je m'attendrais à ce qu'à un moment donné, quelqu'un ait créé une sorte de guide qui vous indique comment / où modifier les variables d'environnement de manière indépendante du shell (ou au moins d'une manière compatible avec les tirets / bash) ... Je peux juste ' t semble trouver les bons termes de recherche pour trouver un tel guide.
Des solutions ou des pointeurs vers des solutions très appréciés!
Actualisé:
- Clarification: Il s'agit de l'utilisateur Ubuntu par défaut créé par le processus d'installation 12.04, donc rien de spécial. Il ne dispose d' un ~ / .profile (qui explicitement les sources ~ / .bashrc), et le seul ~ / .bash * fichiers présents sont .bashrc, .bash_history et .bash_logout ... donc pas qu'il n'y a pas .bash_profile.
- Accent sur la portée: je ne me soucie pas vraiment des shells autres que le shell interactif par défaut (bash) et de tout script qui utilise / bin / sh (aliasé en tiret), donc il n'y a pas besoin de compliquer cela avec quelque chose de plus pour tcsh / ksh / zsh / etc. soutien.